用C#进行北斗串口编程之一:获取北斗卡号

北斗卫星导航系统(以下简称北斗系统,英文缩写BDS),是中国着眼于国家安全和经济社会发展需要,自主建设运行的全球卫星导航系统,是为全球用户提供全天候、全天时、高精度的定位、导航和授时服务的国家重要时空基础设施。

北斗三号已经在2020年正式开通,预计2021年开放给民用。我们在这里可以提前了解一下北斗二代的编程技术,三代的编程原理也是类似的。

你需要的设备

1)一台带串口的北斗终端
我使用的是成都国星的车载北斗终端。
用C#进行北斗串口编程之一:获取北斗卡号_第1张图片

2)电脑上有串口或者U转串的线

现在的电脑一般都不配串口,可以买一根USB转串口的转接线,我从网上买了一根绿联的,质量挺好。连接之后,安装相应的驱动程序。
用C#进行北斗串口编程之一:获取北斗卡号_第2张图片

第一步,查看可用的串口

安装好U转串的驱动之后,可以在计算机管理里看到可用的串口,我这里是COM5。
用C#进行北斗串口编程之一:获取北斗卡号_第3张图片

第二步,从串口接收一行文本

在Visual Studio里新建一个控制台项目,在System.IO.Ports里提供了一个SerialPort类,可以方便地进行串口通讯,北斗设备的串口的波特率一般是115200,具体看厂商设备的说明书。

//using System.IO.Ports;
SerialPort port = new SerialPort("COM5", 115200);
port.Open();
string line = port.ReadLine();
Console.WriteLine(line);
port.Close();

运行之后,我的程序从串口里收到一行数据:

$GNRMC,074126.087,V,,,,,0.00,260.32,250121,,,N*5A

表示北斗设备正常,你接收到的信息可能与我的不一样。

第三步,获取北斗卡号

先上代码。

SerialPort port = new SerialPort("COM5", 115200);
port.Open();
port.Write("$CCICA,0,0*4B\r\n");
for (int i = 0; i < 10; i++)
{
     
    string line = port.ReadLine();
    if (line.StartsWith("$BDICI"))
    {
     
        Console.WriteLine(line);
    }
}

如果北斗设备正常,可以得到类似下面的一行信息,925867就是北斗卡号。

$BDICI,0925867,2204536,1934946,6,60,3,N,0*0F

简单说明一下:

$CCICA,0,0*4B\r\n

是发送给串口的一行命令,如果命令符合北斗通讯的语法规则,串口会收到一条 $BDICI 的反馈信息,逗号分隔了许多参数,第一个参数就是北斗卡号。

好了,今天先介绍到这里,最最基本的北斗串口通讯就是这么简单,后续我再分享其它的内容。

你可能感兴趣的:(c#)