我每次從串口獲得兩個字節並找到它們之間的差異,然後在一個while循環中創建一個wpf,並在其中顯示差異通過一個文本框:在startbutton_Click()函數內的while循環中接收串口數據
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
SerialPort port;
private void StartButton_Click(object sender, RoutedEventArgs e)
{
port = new SerialPort("COM3");
port.BaudRate = 9600;
port.DtrEnable = true;
port.RtsEnable = true;
port.Handshake = Handshake.None;
port.Open();
try
{
if (!port.IsOpen)
throw new Exception();
}
catch (Exception)
{
Console.Out.WriteLine("port is not open!!");
}
while (port.IsOpen)
{
var b1 = port.ReadByte();
var b2 = port.ReadByte();
double t1 = b1 * 1e-9;
double t2 = b2 * 1e-9; ;
var dift = t2 - t1;
if (dift == 0)
{
this.SpeedTextBox.Text = "0";
continue;
}
this.SpeedTextBox.Text = dift;
}
}
private void StopButton_Click(object sender, RoutedEventArgs e)
{
if (port != null)
{
if (port.IsOpen) port.Close();
port.Dispose();
}
}
}
但是當我執行它,然後單擊StartButton表格將被採空working.I知道程序接收到的數據(我用另一種簡單的程序測試過)。但我不知道這裏出了什麼問題!
任何人都可以幫助我嗎?
在此先感謝。
很好的答案,但你忘了提及你如何解決這個問題。 –
是真的。我期待其他人使用BeginRead()提供異步通信的描述,因爲我很難通過手機發布正確的代碼示例。讀者請執行以下操作:調查SerialPort.BeginRead() –