掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MSCommコンポーネントでデータを受信するには? (ID:142138)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
一応、自己レスしておきます。 プリンタのステータス監視部分はプライベート関数で完結しており、やむなくその関数内だけWin32APIを使ってみることにしました。 ' シリアルポートのオープン関数の定義 Private 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 ' CloseHandle ' シリアルポートのクローズ関数の定義 Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long ' シリアルポートの設定関数の定義 Private Declare Function SetCommState Lib "kernel32" (ByVal hCommDev As Long, lpDCB As DCB) As Long ' データの送信関数の定義 Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Long) As Long ' データの受信関数の定義 Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Long) As Long ' 読み取り用定数 Private Const GENERIC_READ = &H80000000 ' 書き込み用定数 Private Const GENERIC_WRITE = &H40000000 ' 既存ファイルの処理 Private Const OPEN_EXISTING = 3 Private Type DCB DCBlength As Long BaudRate As Long fBitFields As Long wReserved As Integer XonLim As Integer XoffLim As Integer ByteSize As Byte Parity As Byte StopBits As Byte XonChar As Byte XoffChar As Byte ErrorChar As Byte EofChar As Byte EvtChar As Byte End Type Private Function GetPrinterStatus() As Boolean (略) ' シリアルポートオープン hdlSireal = CreateFile("COM1", GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0) ' シリアル通信の設定 With udtDCB ' 通信速度9600ボー .BaudRate = 9600 ' ビット長8ビット .ByteSize = 8 ' パリティなし .Parity = 0 ' ストップビット1 .StopBits = 0 End With lngDummy = SetCommState(hdlSireal, udtDCB) Do ' ステータス要求 strStatus = "EST(1)" dLen = LenB(StrConv(strStatus, vbFromUnicode)) lngDummy = WriteFile(hdlSireal, strStatus, dLen, wLen, 0) ' ココで必ずAccessが死ぬ ' ステータス取得 strStatus = Space(10) lngDummy = ReadFile(hdlSireal, ByVal strStatus, 10, lngLen, 0) どうしてもWriteFile関数を呼び出すと、Accessが必ず死ぬ(落ちる)ので、APIでも解決できませんでした。 結構切羽詰まってます。どなたかレスをお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.