C#跨平台使用GPS&北斗定位模块
前言
618为了凑单买了一个GPS&北斗定位模块,水一篇吧。
开箱
内容物包括:一个定位模块,一条天线。
此篇不是广告文,所以就不放链接了,想要的可以上万能的淘宝搜。
连接
模块采用Type-C连接,所以需要一条Type-C线。
连接电脑后会识别成一个COM口,我这里是COM4。
Coding
由于连接上电脑识别为COM口,所以主要就是串口编程了
- 首先新建一个
.net 8
的console
项目 - 引用
nuget
包System.IO.Ports
然后就可以开始愉快的编程了
SerialPort ser = new(PortName, 9600);
ser.Open();
if (ser.IsOpen)
{
Console.WriteLine("GPS Serial Opened! Baudrate=9600");
}
else
{
Console.WriteLine("GPS Serial Open Failed!");
}
try
{
while (true)
{
if (GPS_read() == 1)
{
Console.WriteLine("*********************");
Console.WriteLine("UTC Time:" + utctime);
Console.WriteLine("Latitude:" + lat + ulat);
Console.WriteLine("Longitude:" + lon + ulon);
Console.WriteLine("Number of satellites:" + numSv);
Console.WriteLine("Altitude:" + msl);
Console.WriteLine("True north heading:" + cogt + "°");
Console.WriteLine("Magnetic north heading:" + cogm + "°");
Console.WriteLine("Ground speed:" + sog + "Kn");
Console.WriteLine("Ground speed:" + kph + "Km/h");
Console.WriteLine("*********************");
}
}
}
catch (Exception)
{
ser.Close();
Console.WriteLine("GPS serial Close!");
}
上面是部分的代码,完整的代码开源在 https://github.com/lishewen/GPS.Console
运行结果
跨平台
通过.net 8的跨平台的特性,把模块和程序移到一台ubuntu的树莓派上
接线
只需把Type-C线从电脑端拔掉插到树莓派的USB口上
在树莓派上寻找对应的端口号
使用命令查找已插上的USB
ls /dev|grep USB
我这里得到的结果为ttyUSB0
修改代码
基于上面得到的结果,修改PortName
即把
const string PortName = "COM4";
修改为
const string PortName = "/dev/ttyUSB0";
重新编译,上传到树莓派上运行通过。
结尾
现在.net的泛用性就是如此的强,什么都可以搞。