用VB怎样通过串口接收以下格式的数据,求各位大侠帮帮忙,谢谢了!
对于发送数据格式的说明,求各位大侠帮帮忙,给点思路,让电脑接收到的数据不会不丢失!當測試完成後, 機台會將測試結果通过RS232(接COM口)傳回PC, 格式如下
1. 每32個byte(字節)為一行測試資料, 為文字模式(ASCII), 測試資料最尾端會加上0xa當成結束易做图.
2. 假設測試項目有10項, 傳回的測試資料長度會有 10 X 32 + 1 = 321 byte(字節).
3. PC收取資料一直到收到0xa為止, 就是一次測試的所有資料
4. 每行測式資料內容同LCD屏幕上的顯示資料, 內容如下:
1 2 3
12345678901234567890123456789012
--------------------------------
@AAAAAAAAAABBBBBCCCCCCCDDEFGGHHI
@- 共1字節, 固定為@, 代表每筆資料的開頭
A- 共10字節, 繞組編號及點位,
(1)電感, 漏感, Q, ACR, 會以 Nx(a,b) 表示, 例如 N1(1,2)
(2)圈比會以 Nx:Ny 表示, 例如 N1:N2
(3)電容, O/S會以 PIN(aa,bb)表示, 例如 PIN(1,2)
(4)平衡會以 Nx-Ny 表示, 例如 N1-N2
B- 共5字節, 測試項目, 例如: Rdc, Ls, Lk, TR, O/S, C, Rs, Rp, Q...
C- 共7字節, 數值
D- 共2字節, 單位
E- 共1字節, 空格
F- 共1字節, + 或 - 表示圈比的極性, 其他測項為空格
G- 共2字節, 空格
H- 共2字節, 判定結果, OK, NG, HI或LO
I- 共1字節, 空格
--------------------编程问答-------------------- 全部字节数都已知 收完后 用 MID 函数 一个个地取 --------------------编程问答--------------------
协议有点别扭。
可以在 OnComm 事件中,或者直接轮询,循环接收 Input 信息,直至收到 0xA:
strData = ""
Do Until Right(strData, 1) = &HA Then Exit Do
DoEvents '这个是必要的,已使串口缓存获得新的字节
varTmp = MSComm1.Input
strData = strData & varTmp
Loop
当然,可以在循环中加上超时处理。
补充:VB , 基础类