🐱 算神的小窝 🤓

跨平台使用GPS&北斗定位模块.md


CreationTime:6/26/2024 8:23:41 PM LastAccessTime:1/30/2025 6:57:09 PM


C#跨平台使用GPS&北斗定位模块

前言

618为了凑单买了一个GPS&北斗定位模块,水一篇吧。

开箱

IMG_20240626_114403-1719385618584-2

内容物包括:一个定位模块,一条天线。

此篇不是广告文,所以就不放链接了,想要的可以上万能的淘宝搜。

连接

模块采用Type-C连接,所以需要一条Type-C线。

连接电脑后会识别成一个COM口,我这里是COM4。

image-20240626151416020

Coding

由于连接上电脑识别为COM口,所以主要就是串口编程了

  1. 首先新建一个.net 8console项目
  2. 引用nugetSystem.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

运行结果

image-20240626153024479

跨平台

通过.net 8的跨平台的特性,把模块和程序移到一台ubuntu的树莓派上

接线

只需把Type-C线从电脑端拔掉插到树莓派的USB口上

在树莓派上寻找对应的端口号

使用命令查找已插上的USB

ls /dev|grep USB

我这里得到的结果为ttyUSB0

修改代码

基于上面得到的结果,修改PortName

即把

const string PortName = "COM4";

修改为

const string PortName = "/dev/ttyUSB0";

重新编译,上传到树莓派上运行通过。

image-20240626155249010

结尾

现在.net的泛用性就是如此的强,什么都可以搞。

An unhandled error has occurred. Reload 🗙