当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 关于打开串口设备的问题
帖子发表于 : 2012-04-23 17:30 

注册: 2012-03-09 9:24
帖子: 12
送出感谢: 0 次
接收感谢: 0 次
最近做AMR的设计,用到串口,不管是在ARM板子中还是在Ubuntu主机中,运行程序时,只要是在main()主函数中调用外部定义的打开串口函数,就会提示打不开,只有在main()主函数中直接open才行,这是什么原因? :em20


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 关于打开串口设备的问题
帖子发表于 : 2012-04-23 18:00 

注册: 2007-06-29 20:19
帖子: 112
送出感谢: 0 次
接收感谢: 1
这个到没遇到过,要看你代码怎么写的吧


_________________
http://www.lyhic.com Orand's Blog


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 关于打开串口设备的问题
帖子发表于 : 2012-04-23 21:05 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
啥变量,定义在main里面了吧。


_________________
● 鸣学


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 关于打开串口设备的问题
帖子发表于 : 2012-04-24 17:05 

注册: 2012-03-09 9:24
帖子: 12
送出感谢: 0 次
接收感谢: 0 次
我的部分程序如下:
int open_serial (void) // 这个是打开串口的函数
{
int fd;

if (which_uart == 0)
{
fd = open("dev/ttySAC0", O_RDWR|O_NOCTTY); //以读写方式打开串口0
perror("open /dev/ttySAC0");
}
else //if(which_uart == 1)
{
fd = open("dev/ttySAC1", O_RDWR|O_NOCTTY); //以读写方式打开串口1
perror("open /dev/ttySAC1");
}

return fd;
}

int main(int argc, char *argv[])
{
char *sbuf = {"Hello, this is a Serial_Port test!\n"}; //待发送内容
int sfd, setv, i;
int length = sizeof(sbuf); //发送缓冲区数据长度
struct termios opt;

select_serial(UART_0); //另一个函数,已经定义好,只是简单的一句,确保没问题

sfd = open_serial(); //在这里调用打开串口函数的时候,就会打印出信息:open /dev/ttySAC1: (没有这个设备或文件)
if (sfd == -1) //但是我用 ls -l /dev/ttySAC* 命令查看,就会看到包含/dev/ttySAC1在内的三个ttySAC设备
return -1;

printf("Ready for sending data...\n");

...............
}


而如果,我要是直接是main()函数中用
sfd = open("/dec/ttySAC1", O_RDWR|O_NOCTTY)
打开这个串口就能正常打开并且通信。

这是神马状况? :em20


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译