[VB6 ] 課本上 RS232通訊問題

看板Visual_Basic作者 (布魯斯)時間15年前 (2011/01/18 17:05), 編輯推噓1(106)
留言7則, 2人參與, 最新討論串1/1
小弟是程式初階班 最近在自學VB6 並撰寫一個通訊的程式 從書本上得到程式碼 但有些地方不明白 想請教各位先進 希望能幫忙指導一下 Q1: Dim S3(1 To 1) As Byte 其中輸出的地方有上述這行宣告,不曉得其用意在哪? Q2: For i = LBound(InByte) To UBound(InByte) Buf = Buf + Hex(InByte(i)) + Chr(32) Next i 上述是輸入讀取的地方,小弟認知是這是RS232通訊時讀取 通訊資料的第一筆到最後一筆的方式並轉成16進制.不知是否可以這樣解釋。    Q3: Buf = "" Buf = Comm1.Input '清空輸入緩衝區 上述第一個Buf = ""也是清空的意思嗎? 為什麼要有這個動作?因為刪除後好像對程式沒有影響 第二個Buf = Comm1.Input 課本說是清空,但未何要有這樣的動作產生? 不清空會有何影響? 謝謝 圖示如下 http://ppt.cc/tuW2 程式碼如下 Option Explicit '''''''''''''''''''''''''''''''''''''' '宣告二個位元組型態的變數陣列 '一個用於儲存輸出資料 '一個用於儲存輸入資料 '''''''''''''''''''''''''''''''''''''' Dim OutByte() As Byte Dim InByte() As Byte '''''''''''''''''''''''''''''''''''''' '使用命令按鈕控制項 '結束系統 '若未執行關閉通訊埠的動作,則 '系統結束時,同時也會關閉串列通訊埠 '''''''''''''''''''''''''''''''''''''' Private Sub CmdExit_Click() End End Sub '''''''''''''''''''''''''''''''''''''' '使用命令按鈕控制項 '使用Input指令將被傳送的資料取入 '將位元組資料以16進位表示並存入Buf變數 '將Buf變數內容顯示到接收的文字框中 '''''''''''''''''''''''''''''''''''''' Private Sub CmdReceive_Click() Dim i%, Buf$ Buf = "" InByte = Comm1.Input For i = LBound(InByte) To UBound(InByte) Buf = Buf + Hex(InByte(i)) + Chr(32) Next i txtReceive.Text = Buf End Sub '''''''''''''''''''''''''''''''''''''' '使用命令按鈕控制項 '將使用者的輸入字串先存入Buf變數中 '使用StrConv將Buf變數作型態轉換 '再將轉換完的陣列利用Output指令送出 '''''''''''''''''''''''''''''''''''''' Private Sub CmdSend_Click() Dim Buf$, i% Dim S3(1 To 1) As Byte Buf = Trim(txtSend.Text) OutByte = StrConv(Buf, vbFromUnicode) '轉換字串 Buf = Comm1.Input '清空輸入緩衝區 Comm1.Output = OutByte '送出資料 End Sub '''''''''''''''''''''''''''''''''''''' '表單的載入事件 '在此作開啟通訊埠的動作 '在開啟之前,我們也可以將通訊參數先行指定後 '然後再開啟通訊埠 '''''''''''''''''''''''''''''''''''''' Private Sub Form_Load() Comm1.PortOpen = True End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.136.163

01/18 17:20, , 1F
Q1: S3陣列並沒有被使用到
01/18 17:20, 1F

01/18 17:22, , 2F
Q2:將從RS232讀到的資料(是一個byte型態陣列)中的每一個位
01/18 17:22, 2F

01/18 17:24, , 3F
元組(可將它看成是最小範圍值的整數)轉成16進位整數,並加
01/18 17:24, 3F

01/18 17:25, , 4F
一個空格在其後
01/18 17:25, 4F

01/18 17:26, , 5F
你的Buf只是一個區域字串變數, 用來存放(接收)Comm1元件讀
01/18 17:26, 5F

01/18 17:27, , 6F
進來的值.Buf = ""是將字串變數內容變成空字串.
01/18 17:27, 6F

01/19 01:12, , 7F
謝謝樓上的解說.
01/19 01:12, 7F
文章代碼(AID): #1DDLVHPT (Visual_Basic)