串列埠通訊類: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...