本家掲示板のtxrx1.sbpをインクルード。

使用例

#console

#include "txrx1.sbp"

Dim hComm As Long
Dim stDCB As DCB
Dim timeout As COMMTIMEOUTS

Dim dummy As Long
Dim comnum[10] As Byte

'comポート設定
ZeroMemory(comnum,10)
lstrcpy(comnum,"COM3")

hComm=CreateFile(comnum,GENERIC_READ or GENERIC_WRITE,0,ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0)

'Openエラー処理
IF hComm=-1 Then
print "comm が使えない"
debug
end
End If

'comm設定
stDCB.Parity=0 'Non Parity
stDCB.StopBits=0 'Stop Bit 1
stDCB.BaudRate=1000000 '1Mbps(usb_serial)
stDCB.ByteSize = 8 'data bits 8
stDCB.fBitFields = &H3001
dummy=SetCommState(hComm,stDCB)

'Timeout設定
timeout.ReadIntervalTimeout=1000
timeout.ReadTotalTimeoutMultiplier=0
timeout.ReadTotalTimeoutConstant=1000
timeout.WriteTotalTimeoutConstant=1000
timeout.WriteTotalTimeoutMultiplier=0
dummy=SetCommTimeouts(hComm,timeout)

'データ送儒信
Dim wData(32) As Byte
Dim wLen As Long
Dim rData(500) As Byte
Dim rLen As Long

ZeroMemory(wData,32)
ZeroMemory(rData,500)

wData=lstrcpy(wData,"U"+Chr$(13))

'データ出力(2byte)
dummy=WriteFile(hComm, wData, 2, VarPtr(wLen), ByVal 0)

'データ入力(500byte)
dummy=ReadFile(hComm, rData, 500, VarPtr(rLen), ByVal 0)

print rData(1)

'ポートを閉じる
dummy=CloseHandle(hComm)

end


txrx1.sbp

'シリアルポートのオープン関数の定義
'Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

'シリアルポートのクローズ関数の定義
'Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

'シリアルポートの設定関数の定義
Declare Function SetCommState Lib "kernel32" (ByVal hCommDev As Long,ByRef lpDCB As DCB) As Long

'タイムアウトの設定関数の定義
Declare Function SetCommTimeouts Lib "kernel32" (ByVal hFile As Long,ByRef lpCommTimeouts As COMMTIMEOUTS) As Long

'データの送信関数の定義
'Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As Long

'データの受信関数の定義
'Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Long) As Long


' DCB構造体の定義
Type DCB
DCBlength As Long '構造体のサイズ
BaudRate As Long 'ボーレイト(bps)の設定
fBitFields As Long 'ビット単位のフィールド定義
wReserved As Integer '予約(0をセットする)
XonLim As Integer '受信バッファ中のデータが何バイトになったらXon文字を送るかを指定
XoffLim As Integer '受信バッファの空きが何バイトになったらXoff文字を送るかを指定
ByteSize As Byte '1データのビット数を指定
Parity As Byte 'パリティの方式を指定
StopBits As Byte 'ストップビット数を指定
XonChar As Byte 'Xon文字を指定
XoffChar As Byte 'Xoff文字を指定
ErrorChar As Byte 'パリティエラーの場合に使う文字を指定
EofChar As Byte '非バイナリモードの場合のデータ終了文字の指定
EvtChar As Byte 'イベントを生成する文字を指定
End Type

' COMMTIMEOUTS構造体の定義
Type COMMTIMEOUTS
ReadIntervalTimeout As Long '文字の読み込みの待ち時間
ReadTotalTimeoutMultiplier As Long '読み込みの1文字あたりの時間
ReadTotalTimeoutConstant As Long '読み込みの定数時間
WriteTotalTimeoutMultiplier As Long '書き込みの1文字あたりの時間
WriteTotalTimeoutConstant As Long '書き込みの定数時間
End Type

タグ:

+ タグ編集
  • タグ:
最終更新:2010年10月23日 14:22