2002.Aug.31
Presented by kouta_y
感想等は掲示板、苦情はメールへ。


| ピン番号 | 信号名 | 説明 | 入出力方向 |
| 1 | DCD | キャリア検出 | 入力 |
| 2 | RxD | 受信データ | 入力 |
| 3 | TxD | 送信データ | 出力 |
| 4 | DTR | データ端末レディ | 出力 |
| 5 | GND | グランド(アース) | 入/出力 |
| 6 | DSR | データセットレディ | 入力 |
| 7 | RTS | 送信要求 | 出力 |
| 8 | CTS | 送信可 | 入力 |
| 9 | RI | リングインジケータ | 入力 |



| タイプ | 説明 |
| EVEN | 結果が1なら偶数 |
| MARK | 常に1 |
| ODD | 結果が1なら奇数(上の計算はこれです) |
| SPACE | 常に0 |

Public Const GENERIC_READ As Long = &H80000000 ' 読み取り
Public Const GENERIC_WRITE As Long = &H40000000 ' 書き込み
Public Const OPEN_EXISTING As Long = 3 ' 既存ファイルを開く
Public Const INVALID_HANDLE_VALUE As Long = -1 ' 失敗
' タイムアウト構造体
Public Type COMMTIMEOUTS
ReadIntervalTimeout As Long ' 連続受信時の間隔
ReadTotalTimeoutMultiplier As Long ' 1文字受信の時間
ReadTotalTimeoutConstant As Long ' 受信時間の定数
WriteTotalTimeoutMultiplier As Long ' 1文字送信の時間
WriteTotalTimeoutConstant As Long ' 送信時間の定数
End Type
' 通信リソース開く
Public 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
' ポートから入力
Public Declare Function ReadFile Lib "kernel32" ( _
ByVal hFile As Long, _
lpBuffer As Any, _
ByVal nNumberOfBytesToRead As Long, _
lpNumberOfBytesRead As Long, _
ByVal lpOverlapped As Long _
) As Long
' ポートへ出力
Public Declare Function WriteFile Lib "kernel32" ( _
ByVal hFile As Long, _
lpBuffer As Any, _
ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, _
ByVal lpOverlapped As Long _
) As Long
' タイムアウトの設定
Public Declare Function SetCommTimeouts Lib "kernel32" ( _
ByVal hFile As Long, _
lpCommTimeouts As COMMTIMEOUTS _
) As Long
' 通信リソース閉じる
Public Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long _
) As Long |
' COMポート開く
Public Function CommOpen(ByVal strPort As String) As Long
CommOpen = CreateFile( _
strPort, _
GENERIC_READ Or GENERIC_WRITE, _
0, 0, _
OPEN_EXISTING, _
0, 0 _
)
End Function
|
' COMポートから受信 Public Function CommInput(ByVal hCom As Long, strBuffer As String, ByVal lngLen As Long) As Long Dim lngRead As Long Call ReadFile(hCom, ByVal strBuffer, lngLen, lngRead, 0) CommInput = lngRead End Function |
' COMポートへ送信 Public Function CommOutput(ByVal hCom As Long, ByVal strBuffer As String, ByVal lngLen As Long) As Long Dim lngWrite As Long Call WriteFile(hCom, ByVal strBuffer, lngLen, lngWrite, 0) CommOutput = lngWrite End Function |
' COMポート閉じる Public Function CommClose(ByVal hCom As Long) As Boolean CommClose = CloseHandle(hCom) End Function |
' タイムアウトの設定 Public Function SetCommTimeout(ByVal hCom As Long, typTimeout As COMMTIMEOUTS) As Boolean SetCommTimeout = SetCommTimeouts(hCom, typTimeout) End Function |
| ReadTimeOut = ReadTotalTimeoutMultiplier * ( 受信バイト数 ) + ReadTotalTimeoutConstant |
| WriteTimeOut = WriteTotalTimeoutMultiplier * ( 送信バイト数 ) + WriteTotalTimeoutConstant |


Private hCom As Long |

