ubuntu java serial_在Ubuntu上使用USB转串口转换器进行串行通信

我有一个基于USB到串行转换的FTDI芯片,我将在某一时刻尝试通过RS232与电视进行通信 . 我正在运行Ubuntu Maverick .

我是串口通信的新手,无法弄清楚为什么我不能简单地从端口读取字节 .

串行环回测试成功 . 我将Tx和Rx短接在一起并运行以下C程序,我的键盘在屏幕上回显 .

#include

#include

#include

#include

#include

#include

int main(int argc,char** argv)

{

struct termios tio;

struct termios stdio;

int tty_fd;

fd_set rdset;

unsigned char c='D';

printf("Please start with %s /dev/ttyS1 (for example)\n",argv[0]);

memset(&stdio,0,sizeof(stdio));

stdio.c_iflag=0;

stdio.c_oflag=0;

stdio.c_cflag=0;

stdio.c_lflag=0;

stdio.c_cc[VMIN]=1;

stdio.c_cc[VTIME]=0;

tcsetattr(STDOUT_FILENO,TCSANOW,&stdio);

tcsetattr(STDOUT_FILENO,TCSAFLUSH,&stdio);

fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK); // make the reads non-blocking

memset(&tio,0,sizeof(tio));

tio.c_iflag=0;

tio.c_oflag=0;

tio.c_cflag=CS8|CREAD|CLOCAL; // 8n1, see termios.h for more information

tio.c_lflag=0;

tio.c_cc[VMIN]=1;

tio.c_cc[VTIME]=5;

tty_fd=open(argv[1], O_RDWR | O_NONBLOCK);

cfsetospeed(&tio,B115200); // 115200 baud

cfsetispeed(&tio,B115200); // 115200 baud

tcsetattr(tty_fd,TCSANOW,&tio);

while (c!='q')

{

if (read(tty_fd,&c,1)>0) write(STDOUT_FILENO,&c,1); // if new data is available on the serial port, print it out

if (read(STDIN_FILENO,&c,1)>0)

{

write(tty_fd,&c,1); // if new data is available on the console, send it to the serial port

}

}

close(tty_fd);

}

然后我将USB端插入PC上的USB(/ dev / ttyUSB0)端口,并将电缆的9针侧插入串行端口(/ dev / ttyS0) .

我在/ dev / ttyUSB0上运行了上一个程序,并在另一个终端窗口中输入:

echo "Hello world!" > /dev/ttyS0

什么也没出现 . 我还尝试在/ dev / ttyUSB0和/ dev / ttyS0上的两个独立终端中运行程序,我无法从一个到另一个进行通信 .

有谁知道我在这里做错了什么?

提前致谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值