最近学了很多,也是时候自己做点东西来复习并且巩固下之前的知识了。学以致用最重要。最近写了个小软件,用来处理处理从窗口发送过来的信息。GPS是与M32相连接任何STM32把GPS信息发到电脑的串口上。任何我写了个C#的程序通过串口接收到信息,并对信息进行处理得到我们需要的经纬度,并通过经纬度查找到具体的地址。可以表达的不太清晰,想来几张图来个大家看看具体的效果。任何在讲讲具体的程序。
这是通过别的串口接收软件接收到的串口上的信息。
这是初始化状态下的软件界面
这是按了按钮之后的。由于经纬度查地址需要时间,所以地址不能马上的显示出来。
现在地址查询结束了。 然后我来介绍下程序。 首先需要先写程序来接收串口发过来的数据。 SerialPort sp = new SerialPort();首先我们可以实例化一个串口对象。
sp.PortName = "COM8";
//端口
sp.BaudRate = 38400;
//波特率
sp.Open();
//打开串口 配置完端口和波特率后就可以打开串口来接收数据了 string message = sp.ReadLine();
message = message.Substring(0, message.Length - sp.NewLine.Length); 用这两句可以获得串口传来的数据并且保持在message字符串中。 我们刚才已经看过了传过来的字符串是什么格式的。它采用的是NMEA0183 协议,如果想具体了解它的协议可以去百度下,这里就不再赘述了。 由于我们只是需要经纬度,所以只需要对$GPGGA的数据进行处理。 经过观察我们可以使用,做为分割符来使用Split方法进行分割字符串 然后转换成我们需要的信息。 这里附上程序: public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
SerialPort sp = new SerialPort();
//private void button1_Click(object sender, EventArgs e)
//{
//
//sp.Close();
//
sp.PortName = "COM8";
//
sp.BaudRate = 38400;
//
sp.Open();
//}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
sp.PortName = "COM8";
//端口
sp.BaudRate = 38400;
//波特率
sp.Open();
//打开串口
bool stop = false;
//标志位
string longitude = "0";//经度
string latitude = "0";//纬度
while (!stop)
{
try
{
string message = sp.ReadLine();