テキストファイルをハイパーターミナルのように出力するには?


しん  2005-02-23 20:10:24  No: 119847

PICマイコンとの通信に現在ハイパーターミナルを使用しています。テキストファイル(16進数の数字で書かれたテキストファイル)をハイパータミナルの「テキストファイルの送信」で送っています。

これを、VB6.0のMSCommを使って、テキストファイルをそのまま読み込んで送信することは可能でしょうか?テキストファイルを開いてそのまま送信するサンプルプログラムを探したのですが見つかりませんでした。よろしくお願いいたします。


通りすがり  2005-02-23 21:36:48  No: 119848

なにがわからないのでしょうか?


LESIA  2005-02-23 21:59:57  No: 119849

VB6のサンプルにVbterm.vbpがあるので、それを調べてみては?
たぶんこんな感じで入っていると思う。
C:\Program Files\Microsoft Visual Studio\MSDN98\98VS\1041\Samples\VB98\Mscomm\Vbterm.vbp


しん  2005-02-23 23:05:22  No: 119850

LESIAさん、ありがとうございます。サンプルを拝見したのですが、(私から見ると)膨大なファイルで、「ファイル名が決まっているテキストファイルを読み込む」ことと、「そのテキストファイルを送信する」部分が理解できませんでした。

できれば、「あるテキストファイルを読み込んで、そのままテキスト送信するコード」を教えていただければありがたいです。

初心者ゆえ、わけもわからず質問して申しわけありませんが、よろしくお願いいたします。


通りすがり  2005-02-24 00:27:36  No: 119851

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

こんなんでいいのかな??


LESIA  2005-02-24 00:52:09  No: 119852

確かにコードは色々ごちゃごちゃと書いていますが、質問内容を関係あるのは
ポートを開く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


しん  2005-02-24 18:26:06  No: 119853

「通りすがり」さん、「LESIA」さん、ありがとうございます。
これからコードを書いて試してみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加