linux 下串口转usb不能发送数据包,Linux ,USB转串口驱动,没法读到数据
Linux ,USB转串口驱动,无法读到数据
usb 1-1.1: new full-speed USB device number 5 using ehci-pci
usb 1-1.1: New USB device found, idVendor=067b, idProduct=2303
usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.1: Product: USB-Serial Controller
usb 1-1.1: Manufacturer: Prolific Technology Inc.
usbcore: registered new interface driver usbserial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver pl2303
usbserial: USB Serial support registered for pl2303
usb 1-1.1: pl2303 converter now attached to ttyUSB0
[root@node3 vincent]# ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 Dec 4 14:38 /dev/ttyUSB0
(连接上的话,下位机会每隔2秒发送一串数字,用windows笔记本进行过调试了,串口线什么的都没问题,但是放一台笔记本在哪里太麻烦了,也浪费一台电脑,刚好旁边有服务器,就插到服务器上去了,服务器的Linux内核的,可是插上去读不出任何数据)
已经显示连上了,波特率什么的也都设置好了,9600, 8, 'N', 1,但是不管用minicom还是网上找的的open,opt_set,read函数去读/dev/ttyUSB0,都读不到任何数据,把read返回值不为0,printf却什么都没有,按字符一个个%d的格式printf,全是0,请问是什么原因,我已经是root权限了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop)
{
struct termios newtio,oldtio;
if ( tcgetattr( fd,&oldtio) != 0) {
perror("SetupSerial 1");
return -1;
}
bzero( &newtio, sizeof( newtio ) );
newtio.c_cflag |= CLOCAL | CREAD;
newtio.c_cflag &= ~CSIZE;
switch( nBits )
{
case 7:
newtio.c_cflag |= CS7;
break;
case 8:
newtio.c_cflag |= CS8;
break;
}
switch( nEvent )
{
case 'O':
newtio.c_cflag |= PARENB;
newtio.c_cflag |= PARODD;
newtio.c_iflag |= (INPCK | ISTRIP);
break;
case 'E':
newtio.c_iflag |= (INPCK | ISTRIP);
newtio.c_cflag |= PARENB;
newtio.c_cflag &= ~PARODD;
break;
case 'N':
newtio.c_cflag &= ~PARENB;
break;
}
switch( nSpeed )
{
case 2400:
cfsetispeed(&newtio, B2400);
cfsetospeed(&newtio, B2400);
break;
case 4800:
cfsetispeed(&newtio, B4800);
cfsetospeed(&newtio, B4800);
break;
case 9600:
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
break;
case 115200:
cfsetispeed(&newtio, B115200);
cfsetospeed(&newtio, B115200);
break;
case 460800:
cfsetispeed(&newtio, B460800);
cfsetospeed(&newtio, B460800);
break;
default:
cfsetispeed(&newtio, B9600);
cfsetospeed(&newtio, B9600);
break;
}
if( nStop == 1 )
newtio.c_cflag &= ~CSTOPB;
else if ( nStop == 2 )
newtio.c_cflag |= CSTOPB;
newtio.c_cc[VTIME] = 0;//重要
newtio.c_cc[VMIN] = 100;//返回的最小值 重要
tcflush(fd,TCIFLUSH);
if((tcsetattr(fd,TCSANOW,&newtio))!=0)
{
perror("com set error");
return -1;
}
//printf("set done!\n\r");
return 0;
}
int main(void)
{
int fd1,nset1,nread;
FILE *fp;
char buf[1024];
//fp=fopen("buf.txt","w");
printf("opening ttyUSB0... ...\n");
fd1 = open("/dev/ttyUSB0",O_RDWR|O_NONBLOCK);//打开串口
if (fd1 == -1)
{
printf("fail to open /dev/ttyUSB0\n");
exit(1);
}
printf("success to open /dev/ttyUSB0\n");
printf("setting opt... ...\n");
nset1 = set_opt(fd1,9600, 8, 'N', 1);//设置串口属性
if (nset1 == -1)
{
printf("fail to set opt\n");
exit(1);
}
while(1)
{
memset(buf,0,1024);
nread = read(fd1, buf, 1024);//读串口
if (nread > 0){
printf("Len=%d\n",nread);
//printf("First=%d",buf[0]);
//printf(" Second=%d\n",buf[1]);
buf[nread] = 0;
printf(fp,"%s\n", buf); //输出所读数据
}
sleep(5);//睡眠,等待数据
}
close(fd1);
//fclose(fp);
return 0;
}
------解决思路----------------------
引用:把read返回值不为0,printf却什么都没有,按字符一个个%d的格式printf,全是0
nread = read(fd1, buf, 1024);//读串口
if (nread > 0){
printf("Len=%d\n",nread);
//printf("First=%d",buf[0]);
//printf(" Second=%d\n",buf[1]);
buf[nread] = 0;
printf(fp,"%s\n", buf); //输出所读数据
}
nread返回的值是什么?
linux 下串口转usb不能发送数据包,Linux ,USB转串口驱动,没法读到数据相关推荐
- Linux下串口调试及使用shell编程接收数据
串口简介 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联 ...
- linux禁止向指定ip发送数据包,Linux下使用iptables封锁端口禁止邮件发送
原创文章,转载请注明出处:https://www.myzhenai.com/thread-17843-1-1.html https://www.myzhenai.com.cn/post/2161.ht ...
- linux练习 串口跟进程6,linux下串口测试程序
linux下串口测试程序 通过简单的参数配置,执行文件+串口号+波特率 #include stdio.h #include stdlib.h #include unistd.h #include sy ...
- Linux 下串口编程(C++ 程序设计)
串口通信是最简单的通信方式.即使在USB 非常流行的今天,依然保留了串行通信的方式.网络上已经有大量关于Linux下 C++ 串口编程的文章,但是我依然要写这篇博文.因为网络上的资料不是内容太多,就是 ...
- linux实验串行端口程序设计,Linux下串口编程心得(转)
最近一段时间,需要完成项目中关于Linux下使用串口的一个部分,现在开帖记录过程点滴. 项目的要求是这样的,Qt应用程序主要完成数据采集和发送功能,一开始在google中海搜关键字"Qt串口 ...
- read接收不全linux,linux下串口读写有关问题 read 一次读不全(5)
当前位置:我的异常网» Linux/Unix » linux下串口读写有关问题 read 一次读不全 linux下串口读写有关问题 read 一次读不全(5) www.myexceptions.net ...
- linux设备驱动,tty串口编程 如何查看linux下串口是否可用?串口名称等
如何查看linux下串口是否可用?串口名称等? http://zhidao.baidu.com/question/419148559.html 查看串口是否可用,可以对串口发送数据比如对com1口,e ...
- 串口设置波特率linux函数接口,Linux下串口编程之一:基础设置函数
1,串口操作需要的头文件 #include /* 标准输入输出定义 */ #include /* 标准函数库定义 */ #include /* Unix 标准函数定义 */ #include #inc ...
- 【Linux】Linux 下串口编程入门
目录 串口简介 串口操作 打开串口 设置串口 读写串口 关闭串口 例子 相关主题 串口简介 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是 RS-232-C 接口( ...
最新文章
- 使用Powershell管理Linux 下的 SQL Server
- Linux用init命令关机、重启、切换模式
- oracle 10g 连接语句,Oracle 10g数据库基础之基本查询语句-下-连接子查询
- phpMyAdmin安装部署
- uniapp 如何给搜索框设值_头部导航栏基础设置
- VTK:PolyData之DeletePoint
- Java解析Json
- 知道IP地址如何查看主机名和MAC(网卡)地址
- Docker教程小白实操入门(8)--基于save保存镜像与基于load加载镜像
- 基于JSP的图书管理系统
- JAVA中计算五子棋平局的算法_五子棋计算思路
- openCV python 颜色识别
- CT重建-X射线断层成像仿真实验
- 行列式与矩阵相关的内容学习
- cmyk列印颜色_列印
- js 定时器的开启与关闭
- qt错误:常量中有换行符
- Python变量的理解与内存管理
- 2023团体程序设计天梯赛--正式赛
- 14李沐动手学深度学习v2/权重衰退简洁实现