请教linux 下ch341USB转串口,读串口每次read函数32个字节才会返回。

请教一个问题。 linux下利用ch341USB转串口,读取串口信息,手边有个小板子需要刷卡,读取卡的信息,我的卡里只有4个字节的数据,但是刷8次,也就是32个字节,read函数才会返回,我用minicom读取数据也是一样,所以我怀疑USB转串口的驱动可能有问题,ch341芯片有自己的buffer,buffer大小是多少?有没有可能是buffer满了,才会发给虚拟的串口,这时read函数才会返回。我用select函数监视和read函数一样。

谢谢

没人过来看看?


你怎么去读数据的,读的数据长度是多少? 把代码贴出来看看


FD_ZERO(&fds_read); FD_SET(m_fd,&fds_read); tv.tv_sec = 30; tv.tv_usec = 0; if(select(m_fd+1,&fds_read,NULL,NULL,NULL) > 0) { if(FD_ISSET(m_fd,&fds_read)) { nread = read(m_fd,buf,sizeof(buf)); printf("read length = %d\n",nread); buf[nread] = '\0'; printf("\nbuf %s\n",buf); } }

这个是读数据的代码,感觉没有什么问题。 谢谢


我很想知道,ch341在linux工作的好么?


这个问题怎么没有下文了呢,我现在也遇到这样的问题,盼快速支持,为什么windows下面没有这个问题呢,是不是Linux驱动写的有问题???


请问你使用的linux内核版本是多少? 建议你直接使用linux内核代码,我们测试过没有问题!


linux 2.6.39,用的就是内核自带的ch341的驱动,就是存在这个问题,只有发满32个字节才能读到数据...


我也遇到同样的问题,用的各种linux下接收串口数据的程序,都是要收到32个字节才有反应。而且打开串口的时候,如果上位机串口正在接收数据,那么收到的数据会出错,这种错误应该是串口数据帧部分丢失后,后面接收的数据直接填充后造成的。这个应该是驱动的问题,官方能不能出个驱动解决一下?


用pl2303的就没这样的问题,而且也能一个数据一个数据的收,数据接收也不会乱到出错。难道要改板子换芯片?操作系统是ubuntu 12.10


我测试一下,如果问题存在,会尽快解决问题!


测试系统 : fedora15(虚拟机) 测试硬件 : ch340t 测试软件 : sct 测试流程 : 把DB9的2脚和3脚短接自发自收测试,发送了10个字节数据1234567890(字符),结果成功接收了10个字节数据1234567890(字符)


我也遇到同样的问题,我在2.6.32内核上试的,也是只能一次接收32个字节 能否麻烦CH34X再确认下这个问题


或者能否提供你验证通过的程序代码,我们拿过来自己编译下,看看是不是能解决这个问题


请给个邮箱,我发送给你!


个人信息保护,已隐藏 谢谢!


只有登录才能回复,可以选择微信账号登录