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转串口驱动,没法读到数据相关推荐

  1. Linux下串口调试及使用shell编程接收数据

    串口简介 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联 ...

  2. linux禁止向指定ip发送数据包,Linux下使用iptables封锁端口禁止邮件发送

    原创文章,转载请注明出处:https://www.myzhenai.com/thread-17843-1-1.html https://www.myzhenai.com.cn/post/2161.ht ...

  3. linux练习 串口跟进程6,linux下串口测试程序

    linux下串口测试程序 通过简单的参数配置,执行文件+串口号+波特率 #include stdio.h #include stdlib.h #include unistd.h #include sy ...

  4. Linux 下串口编程(C++ 程序设计)

    串口通信是最简单的通信方式.即使在USB 非常流行的今天,依然保留了串行通信的方式.网络上已经有大量关于Linux下 C++ 串口编程的文章,但是我依然要写这篇博文.因为网络上的资料不是内容太多,就是 ...

  5. linux实验串行端口程序设计,Linux下串口编程心得(转)

    最近一段时间,需要完成项目中关于Linux下使用串口的一个部分,现在开帖记录过程点滴. 项目的要求是这样的,Qt应用程序主要完成数据采集和发送功能,一开始在google中海搜关键字"Qt串口 ...

  6. read接收不全linux,linux下串口读写有关问题 read 一次读不全(5)

    当前位置:我的异常网» Linux/Unix » linux下串口读写有关问题 read 一次读不全 linux下串口读写有关问题 read 一次读不全(5) www.myexceptions.net ...

  7. linux设备驱动,tty串口编程 如何查看linux下串口是否可用?串口名称等

    如何查看linux下串口是否可用?串口名称等? http://zhidao.baidu.com/question/419148559.html 查看串口是否可用,可以对串口发送数据比如对com1口,e ...

  8. 串口设置波特率linux函数接口,Linux下串口编程之一:基础设置函数

    1,串口操作需要的头文件 #include /* 标准输入输出定义 */ #include /* 标准函数库定义 */ #include /* Unix 标准函数定义 */ #include #inc ...

  9. 【Linux】Linux 下串口编程入门

    目录 串口简介 串口操作 打开串口 设置串口 读写串口 关闭串口 例子 相关主题 串口简介 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是 RS-232-C 接口( ...

最新文章

  1. 使用Powershell管理Linux 下的 SQL Server
  2. Linux用init命令关机、重启、切换模式
  3. oracle 10g 连接语句,Oracle 10g数据库基础之基本查询语句-下-连接子查询
  4. phpMyAdmin安装部署
  5. uniapp 如何给搜索框设值_头部导航栏基础设置
  6. VTK:PolyData之DeletePoint
  7. Java解析Json
  8. 知道IP地址如何查看主机名和MAC(网卡)地址
  9. Docker教程小白实操入门(8)--基于save保存镜像与基于load加载镜像
  10. 基于JSP的图书管理系统
  11. JAVA中计算五子棋平局的算法_五子棋计算思路
  12. openCV python 颜色识别
  13. CT重建-X射线断层成像仿真实验
  14. 行列式与矩阵相关的内容学习
  15. cmyk列印颜色_列印
  16. js 定时器的开启与关闭
  17. qt错误:常量中有换行符
  18. Python变量的理解与内存管理
  19. 2023团体程序设计天梯赛--正式赛
  20. 14李沐动手学深度学习v2/权重衰退简洁实现

热门文章

  1. easyui 监听filebox文件框选择改变事件
  2. 冥想(自我修养- 慎独 自我修行)
  3. 在大学里要作的20件事
  4. Linux(deepin) 解决 Anaconda 环境中 matplotlib 中文乱码问题
  5. 详解校招算法与数据结构
  6. dva 切换 history 为 browserHistory 报错
  7. 关于割接9000W数据的一些事
  8. 从ARM9到A15 手机处理器架构进化历程
  9. 指针数组和数组指针区别
  10. Win11如何更改默认下载路径?Win11更改默认下载路径的方法