首先我們得先知道串列埠發來的資料是什麼樣子的:
例如:
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 設定埠控制代碼的資訊 埠號,波特率...