PICマイコンとの通信に現在ハイパーターミナルを使用しています。テキストファイル(16進数の数字で書かれたテキストファイル)をハイパータミナルの「テキストファイルの送信」で送っています。
これを、VB6.0のMSCommを使って、テキストファイルをそのまま読み込んで送信することは可能でしょうか?テキストファイルを開いてそのまま送信するサンプルプログラムを探したのですが見つかりませんでした。よろしくお願いいたします。
なにがわからないのでしょうか?
VB6のサンプルにVbterm.vbpがあるので、それを調べてみては?
たぶんこんな感じで入っていると思う。
C:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1041\Samples\VB98\Mscomm\Vbterm.vbp
LESIAさん、ありがとうございます。サンプルを拝見したのですが、(私から見ると)膨大なファイルで、「ファイル名が決まっているテキストファイルを読み込む」ことと、「そのテキストファイルを送信する」部分が理解できませんでした。
できれば、「あるテキストファイルを読み込んで、そのままテキスト送信するコード」を教えていただければありがたいです。
初心者ゆえ、わけもわからず質問して申しわけありませんが、よろしくお願いいたします。
Dim Fno As Long
Dim FilePath As String
Dim Buf() As Byte
'ファイルのパス
FilePath = "C:\TEST.TXT"
'ファイル読み込み
Fno = FreeFile
Open FilePath For Binary As #Fno
ReDim Buf(LOF(Fno) - 1)
Get #Fno, , Buf
Close #Fno
'ポート開く
MSComm1.PortOpen = True
'送信
MSComm1.Output = Buf
'ポート閉じる
MSComm1.PortOpen = False
こんなんでいいのかな??
確かにコードは色々ごちゃごちゃと書いていますが、質問内容を関係あるのは
ポートを開くmnuOpen_Clickとテキストファイルの送信mnuSendText_Clickの部分です。
その中から、必要最低限の部分だけにするとこうなります。
Dim hSend As Integer
Dim BSize As Integer
Dim LF As Long
Dim Temp As String
MSComm1.PortOpen = True
' 送信ファイルを開きます。
hSend = FreeFile
Open "C:\hogehoge.txt" For Binary Access Read As hSend
' 送信バッファのサイズに従ってファイルからデータを読み取ります。
BSize = MSComm1.OutBufferSize / 2
LF = LOF(hSend)
Do Until EOF(hSend)
' EOF を超えて読み取らないようにします。
If LF - Loc(hSend) <= BSize / 2 Then
BSize = LF - Loc(hSend) + 1
End If
' ファイルからデータを読み取ります。
Temp = Space$(BSize)
Get hSend, , Temp
' バッファ内のデータを送信します。
MSComm1.Output = Temp
' すべてのデータが送信されるまで待機します。
Do
Ret = DoEvents()
Loop Until MSComm1.OutBufferCount = 0
Loop
Close hSend
MSComm1.PortOpen = False
「通りすがり」さん、「LESIA」さん、ありがとうございます。
これからコードを書いて試してみます。
ツイート | ![]() |