097-关于RTKLIB打开串口的问题

今天在windows下连接ublox接收机接收数据,无论是ucenter,串口调试工具还是rtklib实时定位,都能够接收数据,但是利用rtklib源码解算却不行,错误定位在不能打开串口。今晚又在linux下调试,命令行下通过 cat /dev/[port]可以正常接收数据,但是通过下面的程序仍旧无法打开串口:

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>

int main()
{	
	int solu;
	char msg[128];
	char dev[128]= "/dev/ttyACM0";

	if ((solu=open(dev,O_RDWR|O_NOCTTY|O_NONBLOCK))<0) {
		sprintf(msg,"%s open error (%d)",dev,errno);
		printf("%s\n",msg);
		return 0;
	}
	else
		printf("opened\n;");

	return 0;
}

对上述程序在终端编译执行:

$ gcc main.c -o main
$ ./main

返回错误:

/dev/ttyACM0 open error (13)

突然想到通过 cat /dev/[port]查看端口输出需要root权限,于是使用root权限运行:

$ sudo ./main

结果:

opened

所以想到windows下是不是也是这个原因,但是从来没在windows下有过这种情况!好吧这是明天的事了!


在此默默感谢一下毫无保留帮助我的朋友!


2019.04.06
补充:

rtklib在windows下打不开串口的问题,经过测试,如果把串口改成宽字符,就可以打开:

dev = CreateFile(L"COM7", rw, 0, 0, OPEN_EXISTING, 0, NULL);

或者在rtklib工程属性 -> 配置属性 -> 常规 -> 字符集 ,改为使用多字节字符集

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章