C 串列埠通訊

2021-06-05 04:22:35 字數 4562 閱讀 3118

串列埠通訊類:serialportdao.cs
using system;

using system.collections.generic;

using system.text;

using system.io.ports;

namespace ly.fuelstationpos.protocol

set

}#endregion

#region 建構函式

private serialportdao()

private void loadserialport()

#endregion

#region 串列埠操作集合

/// /// 返回串列埠物件的單個例項

///

///

public static serialportdao getserialportdao()

/// /// 釋放串列埠資源

///

~serialportdao()

/// /// 開啟串列埠

///

public void open()

}catch (exception ex)

}/// /// 關閉串列埠

///

public void close()

}/// /// 串列埠是否開啟

///

///

public bool isopen()

/// /// 資料傳送

///

/// 要傳送的資料位元組

public void senddata(byte data)

catch (exception ex)

}/// /// 傳送命令

///

/// 傳送資料

/// 接收資料

/// 超時時間

///

public int sendcommand(byte senddata, ref byte receivedata, int overtime)

system.threading.thread.sleep(50);

}if (serialport.bytestoread >= receivedata.length)

else

receiveeventflag = false; //開啟事件

return ret;

}catch (exception ex)

}return -1;

}//////資料傳送

//////要傳送的資料字串

public void senddata(string data)

if (serialport.isopen)

}//////將指定數量的位元組寫入輸出緩衝區中的指定偏移量處。

//////傳送的位元組資料

///寫入偏移量

///寫入的位元組數

public void senddata(byte data, int offset, int count)

if (serialport.isopen)

}/// /// 資料接收

///

///

///

public void datareceived(object sender, serialdatareceivedeventargs e)

try}

catch (exception ex)}}

}

串列埠通訊資料類:portdatareciveeventargs

重寫portdatareciveeventargs引數類
using system;

using system.collections.generic;

using system.text;

namespace ly.fuelstationpos.protocol

set

}public portdatareciveeventargs()

public portdatareciveeventargs(byte data)

}}

//進製轉換(串列埠通訊中比較常用的16進製制、byte、壓縮bcd碼、long、ascii、float等之間的轉換方法)

//進製轉換:converthelper.cs

using system;

using system.collections.generic;

using system.text;

using system.io;

namespace ly

/// /// 16進製制轉化成bcd

///

/// byte

/// 返回bcd碼

public static byte hextobcd(byte b)

/// /// 16進製制轉化成bcd

///

/// int

/// 返回bcd碼

public static byte hextobcd(int i)

/// /// double轉換為壓縮bcd

///

/// 0-100內的雙精度浮點數字

/// 返回壓縮bcd碼

public static string doubletobcd(double d)

", temp1, temp2);

}/// /// long轉換為bcd

///

///

///

public static long tobcd(long val)

res |= val << bit;

return res;

}/// /// bcd轉換為long

///

///

///

public static long frombcd(long vals)

return b;

}/// /// bcd轉化成16進製制

///

///

///

public static byte bcdtohex(byte b)

/// /// bcd轉化成16進製制

///

///

///

public static byte bcdtohex(int i)

/// /// btye轉化成16進製制字元

///

/// byte

///

public static string tohexstring(byte b)

/// /// int轉化成16進製制字元

///

/// int

///

public static string tohexstring(int num)

/// /// 16進製制字串轉換成位元組陣列

///

///

///

public static byte hexstringtobytearray(string s)

return buffer;

}/// /// 位元組陣列轉換成16進製制字串

///

///

///

public static string bytearraytohexstring(byte data)

return sb.tostring().trim().toupper();

}/// /// ascii轉16進製制

///

/// ascii

///

public static string asciitohex(string ascii)

return sb.tostring().trimend(' ');

}/// /// hex to ascii

///

///

///

public static string hextoascii(string hex)

return result.padleft(length, '0');

}return string.empty;

}/// /// ascii to float

///

///

///

public static float asciitofloat(string ascii)

float f = bitconverter.tosingle(arr, 0);

return f;

}return 0f;

}/// /// hex to float

///

///

///

public static float hextofloat(string hex)

#endregion

}}

C 串列埠通訊

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

C 串列埠通訊

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

C 串列埠通訊

c 串列埠通訊 在.net下編寫串列埠通訊程式有3中方法 1 serialport類 表示串列埠資源。命名空間 system.io.ports 1 常用屬性 baudrate 獲取或設定序列波特率 databits 獲取或設定每個位元組的標準資料位長度。isopen 獲取乙個值,該值指示 seria...