我想请问
我将GPS接上友善之臂mini2440上的RS232(COM0)串口
但是我做一个简易的GPGGA接收显示在终端机上
却发现没有撷取到GPS资讯
下面是我的代码,其中#define MODEMDEVICE "/dev/ttySAC0" 开发版串口名称
执行时却没从串口撷取到GPS,好像不是这个名
我是在win7的超终端机上查串口名称
~$ cd /dev/
/dev $ ls
谁知道在mini2440上的RS232(COM0)串口在终端上是哪个装置名称 ( 已試過/dev/ttySAC0和/dev/tty0 但也沒反應)
网路上似乎搜索不到名称?(我不要TTL串口装置名称)
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<termios.h>
#include<stdio.h>
#include<string.h>
#define BAUDRATE B4800 // GPS每秒传输位元
#define MODEMDEVICE "/dev/ttySAC0" // 啟動串口
int main()
{
int fd,c=0,res;
struct termios oldtio,newtio;
char buf[256];
printf("Start...............\n");
fd = open(MODEMDEVICE,O_RDWR|O_NOCTTY);
/ *
开启PC的COM1通讯阜,MODEMDEVICE为“/ dev/ttyS0的
O_RDWR:可读可写的方式开文件
会影响到程式
* /
if(fd<0)
{
perror(MODEMDEVICE);
exit(1);
}
printf("Opne........\n");
tcgetattr(fd,&oldtio);
bzero(&newtio,sizeof(newtio));
// /通讯协定设定为:B4800 / 8N1 /忽略任何数据机状态/启用接收器
newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
newtio.c_lflag = ICANON;
tcflush(fd,TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
printf("Reading..........\n");
while(1) //持續接收
{
res=read(fd,buf,255);
buf[res]='\0';
printf("res=%d buf=%s\n",res,buf);
if(buf[0] =='/') break; / /若街收到异常讯息,就停止接收
}
printf("Close............\n");
close(fd); / /关闭档案描述子,一个所指的序列埠
/ /存回旧的通讯埠参数,也就是程式结束时,将原先的终端机参数复原到原样
tcsetattr(fd,TCSANOW,&oldtio);
return 0;
}