我的项目使用ARM开发板上的串行端口。
旧版本的电路板(TS-7800)继续工作。我必须升级到更新版本的电路板(TS-7800-V2)才能完成项目。
在新的主板上,我可以打开串口的文件描述符,但是当我从端口读取时,返回-1。这是打开的文件代码:
<!doctype html>
<html lang="en">
<head>
<script src="//code.jquery.com/jquery-1.12.4.js"></script>
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css">
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<link href="https://cdn.datatables.net/buttons/1.4.2/css/buttons.dataTables.min.css">
<script src="https://cdn.datatables.net/buttons/1.4.2/js/dataTables.buttons.min.js"></script>
<link href="https://cdn.datatables.net/select/1.2.3/css/select.dataTables.min.css">
<script src="https://cdn.datatables.net/select/1.2.3/js/dataTables.select.min.js"></script>
<link href="/scripts/datatables/extensions/Editor/css/editor.dataTables.min.css">
<script src="/scripts/datatables/extensions/Editor/js/dataTables.editor.min.js"></script>
</head>
</html>
这是main.c中的函数调用。这是
gps_fd = initPort("/dev/ttts4", "COM3", O_RDWR, B19200);
initPort()
int initPort( char *port, char *name, int oflags, speed_t baudRate ){
int fd; //File descriptor
fd = open(port, oflags); //Open the port like a file
printf("fd = %d\n", fd); //Print file descriptor to terminal
assert(fd > 0); //Open returns -1 on error
struct termios options; //Initialize a termios struct
tcgetattr(fd, &options); //Populate with current attributes
cfsetospeed (&options, baudRate); //Set baud rate out
cfsetispeed (&options, baudRate); //Set baud rate in (same as baud rate out)
options.c_cflag &= ~CSIZE; //Clear bit-length flag so it can be set
//8N1 Serial Mode
options.c_cflag |= CS8; //Set bit-length: 8
options.c_cflag &= ~PARENB; //Set parity: none
options.c_cflag &= ~CSTOPB; //Set stop bit: 1
options.c_cflag &= ~CRTSCTS; //Set flow control: none
options.c_iflag &= ~ICANON; //Enable canonical input
options.c_cflag |= (CLOCAL | CREAD); //Enable receiver, and set local mode
tcsetattr(fd, TCSANOW, &options); //Set new attributes to hardware
return fd;
}
会返回&#34; 3&#34;,这是一个很好的fd (gps_fd)
。我工作的另一个应用程序返回&#34; 15&#34;对于fd
,这也很好。执行串口读取:
fd
原因&#34; bytesRead&#34;为-1。投入&#34; perror&#34;行打印&#34;输入/输出错误&#34;。
我运行的代码与我在早期版本的主板上运行的代码相同,但设备名称(/ dev)没有改变。还有什么我应该寻找的会导致端口无法读取吗?
答案 0 :(得分:0)
感谢所有评论的人,以增加我的知识! 事实证明,FPGA(向板提供硬件UART)已关闭。这是一个仍在开发中的新电路板,这是设计人员所知道的问题,并且他们已经在修复工作。如果您发现自己处于类似情况,请与董事会制造商保持联系。 这台Technologic Systems的单板计算机(TS-7800-V2)非常棒,它们提供了出色的客户服务。