C 串列埠通訊 解析串列埠發來資料

2021-08-21 19:18:01 字數 1521 閱讀 9823

首先我們得先知道串列埠發來的資料是什麼樣子的:

例如:

55 aa 02 04 01 02 03 04 05 0f
我們看一下上面的例子

資料頭: 55 aa 02

有效資料位:04有效資料位的意思是,從這個字元往後數多少位。是他的有效資料

代表數值:01 02 03 04 05

代表校驗碼:0f

首先我們需要準備乙個串列埠物件

// 我們需要有乙個串列埠

serialport ser = new serialport();

// 設定埠基本資訊

portname = "com2";

baudrate = 57600;

databits = 8;

handshake = handshake.none;

stopbits = stopbits.one;

readtimeout = -1;

ser.dtrenable = true;

ser.parity = parity.none;

// 開啟串列埠埠

ser.open(); // 這裡只做乙個比較 該有try/catch還是要加上

給串列埠傳送資訊,接下來。串列埠會給上位機傳送一些指令

public int sendmsg(string str)

// 去除傳輸來的string字串

str = str.replace(" ", "");

// 保證字串能夠整除2

if(str.length % 2 != 0)

// 準備陣列

byte value = new byte[str.length / 2];

// 為陣列賦值

for (int i = 0; i < value.length; i++)

// 傳送資料

ser.write(value, 0, value.length);

return 1;

}

傳送完命令以後。串列埠裝置會給上位機傳送一連串的他的命令

// 在接收資料之前。我們需要繫結串列埠讀取事件

// 例如我在load事件中接收

private void form1_load(object sender, eventargs e)

// 準備乙個佇列(作為緩衝資料)

queueresultbytes = new queue();

// 接收事件方法

private void getdata(object sender, serialdatareceivedeventargs e)

// 解析步驟

while(resultbytes.count >= 10)

// 資料讀取完了。 resultarray就是最後的值集合

} }

}

本人小菜。本篇部落格只是作為個人記錄。。如果對各位有幫助。那最好。。。如果無用。輕噴。謝謝

C 串列埠通訊

串列埠通訊類 serialportdao.csusing system using system.collections.generic using system.text using system.io.ports namespace ly.fuelstationpos.protocol set ...

C 串列埠通訊

本文 串列埠介紹 串列埠叫做序列介面,也稱序列通訊介面,按電氣標準及協議來分包括rs 232 rs 422 rs485 usb等。rs 232 c rs 422與rs 485標準只對介面的電氣特性做出規定,不涉及接外掛程式 電纜或協議。usb是近幾年發展起來的新型介面標準,主要應用於高速資料傳輸領域...

C 串列埠通訊

但是網上好多都是寫的窗體程式 還有各種複雜的類裡面,看起來很費勁兒,所以我這裡就寫了乙個 只有控制台 只有 乙個主函式類 類似於c語言結構化的方式,把真的的問題暴露出來,重點凸出來.大概步驟就是 檢測串列埠是否存在以及數量 定義乙個埠控制代碼 serialport 設定埠控制代碼的資訊 埠號,波特率...