private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (isTracking) { Array lines = data.ToArray(); parsed = ParseNmea(lines); ReceivedTextBox.Text = ""; //foreach (KeyValuePair<string, string> entry in parsed) //{ // ReceivedTextBox.AppendText(entry.Key + ": " + entry.Value + "\n"); // ReceivedTextBox.ScrollToEnd(); //} ReceivedTextBox.AppendText("time: " + parsed["time"]); ReceivedTextBox.AppendText("\nlongitude: " + parsed["lon_readable"]); ReceivedTextBox.AppendText("\nlatitude: " + parsed["lat_readable"]); ReceivedTextBox.AppendText("\nsatellites: " + parsed["sats"]); map = new Map(); map.Layers.Add(OpenStreetMap.CreateTileLayer()); var center = CalcPosition(); var sphericalMercatorCoordinate = SphericalMercator.FromLonLat(center.X, center.Y); map.Home = n => n.NavigateTo(sphericalMercatorCoordinate, map.Resolutions[9]); MyMapControl.Map = map; worker.RunWorkerAsync(); } }
private void port_DataReceived(object sender, SerialDataReceivedEventArgs e) //串口数据接收事件 { if (!ReceivedValueRadioButton.Checked) //若接收模式为字符模式 { string str = serialPort1.ReadExisting(); //字符串方式读 ReceivedTextBox.AppendText(str); //接收文本框添加接收数据内容 } else //若接收模式为数值模式 { byte data = (byte)serialPort1.ReadByte(); //将从串口接收的int型数值转换为byte型数值(相当于C语言中的unchar) string str = Convert.ToString(data, 16).ToUpper(); //将byte型转为十六进制字符串 ReceivedTextBox.AppendText("0x" + (str.Length % 2 == 1 ? str + "0" : str) + " "); //若为一位则在前面补0 } }