請問有關於RS232和VB的語法

我想請問

利用VB 將RS232接收過來的資料分類

連線架構 A電腦VB程式==>RS232==>B電腦VB程式

如果我有兩筆資料

第一筆

A

123456

654321

第二筆

B

zxcvbn

nbvcxz

判斷接收到A 會自動接收到TEXT1.TEXT

收到B判斷接收到TEXT2.TEXT

資料類型可以是再A電腦的 TEXT的內容或是陣列儲存資料

如果還是不清楚可以在發問

我在講詳細一點

有點急著需要處理

希望有大大可以提供範例程式>O<

拜託各位大大了!!!!!

希望趕快幫忙一下!!!

已更新項目:

我現在是兩台電腦都寫VB並且要利用RS232傳送

text1

A

123456

654321

text2

B

zxcvbn

nbvcxz

因為我現在只會利用MSCOMM1.INPUT 或 OUTPUT

所以我才這樣問說如果傳送資料過去怎樣判斷

我可以將資料傳送~但是不知道不會想怎麼判斷來做分類

當B電腦收到資料之後~可以判斷收到的資料A或B

當然~資料長度不是固定的~

所以樓下大大的方式我可能不能用~

我想問除了利用所謂的字數長度還有沒有其他更快的方式

或者是建議都可以~拜託了大大~>O<

2 個解答

評分
  • 最佳解答

    1.表單中加入 MSComm

    2.Form_Load中加入下列程式碼

    Private Sub Form_Load()

    '設定comport的位置

    MSComm1.CommPort = 1

    '檢查一下Com1是否被使用了,若被使用了,把Com1關閉並重設.

    If (MSComm1.PortOpen) Then MSComm1.PortOpen = False

    '設定comport的讀取速率,注意RS232傳送速率,有的是9600,有的是1200,看你的Device而定

    MSComm1.Settings = "9600,N,8,1"

    '設定DTR線路為高電位

    MSComm1.DTREnable = True

    '設定讀取的長度

    MSComm1.InputLen = 6

    '當緩衝區有33bytes則觸發事件

    MSComm1.RThreshold = 6

    '交握模式設定

    MSComm1.Handshaking = MSCOMMLIB.HandshakeConstants.comXOnXoff

    '資料格式,走6byte,text模式

    MSComm1.InputMode = MSCOMMLIB.InputModeConstants.comInputModeText

    'null一樣照收

    MSComm1.NullDiscard = False

    '打開comport 1

    MSComm1.PortOpen = True

    Timer1.Enabled = True

    MSComm1.RTSEnable = True

    End Sub

    2007-02-13 18:48:03 補充:

    3.加入MSComm1_OnComm 接收事件

    Private Sub MSComm1_OnComm()

    Dim TempStr as String

    If MSComm1.InBufferCount = 6 Then

    TempStr = MSComm1.Input

    debug.print "進入資料:" & TempStr

    '這裡就寫你要的邏輯,看怎麼處理資料嚕

    end if

    End Sub

    希望上面這些是你要的東西

    2007-02-13 18:52:44 補充:

    ###判斷接收到A 會自動接收到TEXT1.TEXT

    ###收到B判斷接收到TEXT2.TEXT

    ###資料類型可以是再A電腦的 TEXT的內容或是陣列儲存資料

    約定的資料就看A電腦傳出的資料格式,約定固定長度例如13碼

    A123456123456

    B987654987654

    那設定讀取的長度

    MSComm1.InputLen = 13

    '當緩衝區有13bytes則觸發事件

    MSComm1.RThreshold = 13

    收到資料就切字串處理即可,okay嗎?

    2007-02-14 10:06:22 補充:

    那設定讀取的長度

    MSComm1.InputLen = 1

    '當緩衝區有1bytes則觸發事件

    MSComm1.RThreshold = 1

    也就是每一個序列字元取一次

    那你的每個資料列的結尾約定一個符號,例如#

    則程式接收序列資料每個byte先都暫存在一字串,等到接收到特殊符號#變通知程式資料接收完整,判斷第一個字元後寫入文字檔內

    這樣就行啦...加油

    參考資料: 自己經驗
  • 1 0 年前

    您可以再把您的問題說明詳細一點嘛?

    判斷接收到A 會自動接收到TEXT1.TEXT

    收到B判斷接收到TEXT2.TEXT

    就這地方我看不太懂,因此無法正確的回答

    不過有關VB RS232的部分可以請您參考

    VB 與RS232通訊串列控制相關的書籍

還有問題?馬上發問,尋求解答。