我應該做等到發送到串行端口串口
的所有數據,以測試該條件假定波紋管的代碼:
Console.WriteLine("Baud is:" + SerialPortObj.BaudRate);
Console.WriteLine(DateTime.Now.Millisecond);
string tmpStr="";
for (int i = 0; i < 100; i++)
{
tmpStr += "A";
}
SerialPortObj.Write(tmpStr.ToCharArray(),0,99);
Console.WriteLine(DateTime.Now.Millisecond);
例如輸出爲:
波特率是:300
這表明.Net並沒有等到所有要發送的字符!
只提下面的代碼不工作:
Console.WriteLine("Baud is:" + SerialPortObj.BaudRate);
Console.WriteLine(DateTime.Now.Millisecond);
string tmpStr="";
for (int i = 0; i < 100; i++)
{
tmpStr += "A";
}
SerialPortObj.Write(tmpStr.ToCharArray(),0,99);
while (SerialPortObj.BytesToWrite>0)
{
Thread.Sleep(1);
Console.WriteLine(SerialPortObj.BytesToWrite);
};
Console.WriteLine(DateTime.Now.Millisecond);
例如輸出爲:
波特率是:300
我是一個特殊的協議,是工作取決於波特率改過來,並使用一些東西像如下:
->[Send Some Bytes (Baud300)]
<-[Receive Another Bytes (Baud9600)]
,所以我想通過寫方法來發送一些字符和等待,直到它完成,完成之後我的權利嘗試改變波特率,所以我可以理解收到的字節
有什麼想法嗎?
可能它發送數據真的很快嗎?嘗試增加循環到10000次迭代,看看接下來 – Reniuz
會發生什麼,因爲波特是300,因此每個字符持續大約23毫秒。 – mefmef
有一個開始和一個停止位,我會期望每個字符33ms或DRIVER發送所有100個字符。一般來說,串口write()調用不會等待所有字符。實際上被送出去了。什麼是實際的tx?您似乎忘記告訴我們調試信息的重要項目。 –