Win32 API 日本語リファレンス
ホームDevices.Bluetooth › RFCOMM_RPN_DATA

RFCOMM_RPN_DATA

構造体
サイズx64: 7 バイト / x86: 7 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
BaudBYTE1+0+0リモートポートのボーレートを示すコード値。
DataBYTE1+1+1データビット数・ストップビット・パリティを示すビットフィールド。
FlowControlBYTE1+2+2フロー制御方式を示すビットフラグ。XON/XOFFやRTS/CTS等を表す。
XonCharBYTE1+3+3XON文字(送信再開)として使用する文字コード。
XoffCharBYTE1+4+4XOFF文字(送信停止)として使用する文字コード。
ParameterMask1BYTE1+5+5どのRPNパラメータが有効かを示すマスクの第1バイト。
ParameterMask2BYTE1+6+6どのRPNパラメータが有効かを示すマスクの第2バイト。

各言語での定義

#include <windows.h>

// RFCOMM_RPN_DATA  (x64 7 / x86 7 バイト)
typedef struct RFCOMM_RPN_DATA {
    BYTE Baud;
    BYTE Data;
    BYTE FlowControl;
    BYTE XonChar;
    BYTE XoffChar;
    BYTE ParameterMask1;
    BYTE ParameterMask2;
} RFCOMM_RPN_DATA;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RFCOMM_RPN_DATA
{
    public byte Baud;
    public byte Data;
    public byte FlowControl;
    public byte XonChar;
    public byte XoffChar;
    public byte ParameterMask1;
    public byte ParameterMask2;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RFCOMM_RPN_DATA
    Public Baud As Byte
    Public Data As Byte
    Public FlowControl As Byte
    Public XonChar As Byte
    Public XoffChar As Byte
    Public ParameterMask1 As Byte
    Public ParameterMask2 As Byte
End Structure
import ctypes
from ctypes import wintypes

class RFCOMM_RPN_DATA(ctypes.Structure):
    _fields_ = [
        ("Baud", ctypes.c_ubyte),
        ("Data", ctypes.c_ubyte),
        ("FlowControl", ctypes.c_ubyte),
        ("XonChar", ctypes.c_ubyte),
        ("XoffChar", ctypes.c_ubyte),
        ("ParameterMask1", ctypes.c_ubyte),
        ("ParameterMask2", ctypes.c_ubyte),
    ]
#[repr(C)]
pub struct RFCOMM_RPN_DATA {
    pub Baud: u8,
    pub Data: u8,
    pub FlowControl: u8,
    pub XonChar: u8,
    pub XoffChar: u8,
    pub ParameterMask1: u8,
    pub ParameterMask2: u8,
}
import "golang.org/x/sys/windows"

type RFCOMM_RPN_DATA struct {
	Baud byte
	Data byte
	FlowControl byte
	XonChar byte
	XoffChar byte
	ParameterMask1 byte
	ParameterMask2 byte
}
type
  RFCOMM_RPN_DATA = record
    Baud: Byte;
    Data: Byte;
    FlowControl: Byte;
    XonChar: Byte;
    XoffChar: Byte;
    ParameterMask1: Byte;
    ParameterMask2: Byte;
  end;
const RFCOMM_RPN_DATA = extern struct {
    Baud: u8,
    Data: u8,
    FlowControl: u8,
    XonChar: u8,
    XoffChar: u8,
    ParameterMask1: u8,
    ParameterMask2: u8,
};
type
  RFCOMM_RPN_DATA {.bycopy.} = object
    Baud: uint8
    Data: uint8
    FlowControl: uint8
    XonChar: uint8
    XoffChar: uint8
    ParameterMask1: uint8
    ParameterMask2: uint8
struct RFCOMM_RPN_DATA
{
    ubyte Baud;
    ubyte Data;
    ubyte FlowControl;
    ubyte XonChar;
    ubyte XoffChar;
    ubyte ParameterMask1;
    ubyte ParameterMask2;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RFCOMM_RPN_DATA サイズ: 7 バイト(x64)
dim st, 2    ; 4byte整数×2(構造体サイズ 7 / 4 切り上げ)
; Baud : BYTE (+0, 1byte)  poke st,0,値  /  値 = peek(st,0)
; Data : BYTE (+1, 1byte)  poke st,1,値  /  値 = peek(st,1)
; FlowControl : BYTE (+2, 1byte)  poke st,2,値  /  値 = peek(st,2)
; XonChar : BYTE (+3, 1byte)  poke st,3,値  /  値 = peek(st,3)
; XoffChar : BYTE (+4, 1byte)  poke st,4,値  /  値 = peek(st,4)
; ParameterMask1 : BYTE (+5, 1byte)  poke st,5,値  /  値 = peek(st,5)
; ParameterMask2 : BYTE (+6, 1byte)  poke st,6,値  /  値 = peek(st,6)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global RFCOMM_RPN_DATA
    #field byte Baud
    #field byte Data
    #field byte FlowControl
    #field byte XonChar
    #field byte XoffChar
    #field byte ParameterMask1
    #field byte ParameterMask2
#endstruct

stdim st, RFCOMM_RPN_DATA        ; NSTRUCT 変数を確保
st->Baud = 100
mes "Baud=" + st->Baud