我有一個使用.NET SerialPort類的C#應用程序。我用來從串口獲取數據的代碼並不特別。關鍵的部分是C#和SerialPort類截斷數據
//Open the port
comport.BaudRate = myPort.BaudRate;
comport.StopBits = StopBits.One;
comport.DataBits = 8;
comport.Parity = Parity.None;
comport.ReadTimeout = 20000;
comport.PortName = myPort.PortSystemName;
comport.Handshake = Handshake.None;
comport.RtsEnable = true;
comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
comport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string msg = "";
try
{
msg = comport.ReadExisting();
if (comport.IsOpen)
comport.Close();
}
此代碼工作完全正常在Windows XP。但是,在Windows 7上,無論發送什麼數據,都會遇到問題,它只會提取前四個字符。所以在諸如「123456」的字符串中,味精將是「1234」。收集數據的設備是RFIdeas pcProx,我已驗證數據是否正常。我也證實了超級終端中的數據看起來不錯。因此,我在代碼中採集數據的方式肯定有些奇怪。幫幫我!
附註:我發現即使代碼相同,在串行/控制或手動創建時,「SerialPort」的行爲也會有所不同。 – leppie