ホーム › Devices.Bluetooth › RFCOMM_RPN_DATA
RFCOMM_RPN_DATA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Baud | BYTE | 1 | +0 | +0 | リモートポートのボーレートを示すコード値。 |
| Data | BYTE | 1 | +1 | +1 | データビット数・ストップビット・パリティを示すビットフィールド。 |
| FlowControl | BYTE | 1 | +2 | +2 | フロー制御方式を示すビットフラグ。XON/XOFFやRTS/CTS等を表す。 |
| XonChar | BYTE | 1 | +3 | +3 | XON文字(送信再開)として使用する文字コード。 |
| XoffChar | BYTE | 1 | +4 | +4 | XOFF文字(送信停止)として使用する文字コード。 |
| ParameterMask1 | BYTE | 1 | +5 | +5 | どのRPNパラメータが有効かを示すマスクの第1バイト。 |
| ParameterMask2 | BYTE | 1 | +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 Structureimport 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: uint8struct 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