串口“读”操作不工作

问题描述:

我想读通过串口但读操作的数据总是返回0。串口“读”操作不工作

// Opening COM port and m_fd returned a valid number 
m_fd = open (m_com_port, O_RDWR | O_NOCTTY | O_SYNC); 

//Read operation 
length = read(m_fd, &ch, 1); // length is always zero 

setserial -g /tmp/xdl/serial/com_7 
# /tmp/xdl/serial/com_7, UART: undefined, Port: 0x0000, IRQ: 45 

可以将某些有一点我在做什么错误,为什么setserial的命令给出undefined

+0

你试过用其他程序读你的串口吗?它工作吗? 您确定该串口线上有流量吗? – Federico

+0

我试着echo'Hello'>/tmp/xdl/serial/com_7,它工作正常。 – Sijith

+0

'echo'Hello'>/tmp/xdl/serial/com_7'是一个写操作,因此您不会在其他程序中再现您的问题。尝试'cat','hexdump','minicom'为了*阅读*就像你的例子 – Federico

您的BUFFER_SIZE可能太小,它必须提供足够大的缓冲区。

BUFFER_SIZE是读取函数的第三个参数。

+0

我试图读一个字符 \t unsigned int length; \t unsigned char ch; \t \t length = read(m_fd,&ch,1) – Sijith

+0

什么是您的linux串行驱动程序? –