免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 13080 | 回复: 1
打印 上一主题 下一主题

求助,关于linux下usb通信的c语言程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-14 17:42 |只看该作者 |倒序浏览
电机方面的程序,在windows下,通信端口打开,和通信读写时间的程序是这样的
通信方式为非同期半二重通信。

------------------------------------------------
HANDLE Comopen(char *port)
{
        HANDLE hComm;
        DCB hDCB;
        COMMTIMEOUTS        cTimeouts;

        hComm = CreateFileA( port,
                                                GENERIC_READ | GENERIC_WRITE,
                                                0,
                                                NULL,
                                                OPEN_EXISTING,
                                                0,
                                                NULL );
        if( hComm == INVALID_HANDLE_VALUE ){
                hComm = NULL;
                goto FuncEnd;
        }
       
        if( !GetCommState( hComm, &hDCB )){

                cout<<"ERROR:GetCommState error"<<endl;
                Comclose( hComm );
                hComm = NULL;
                goto FuncEnd;
        }
       
        hDCB.BaudRate = 115200;               
        hDCB.ByteSize = 8;                               
        hDCB.fParity  = TRUE;                       
        hDCB.Parity   = NOPARITY;       
        hDCB.StopBits = ONESTOPBIT;               
       
        if( !SetCommState( hComm, &hDCB )){
                cout<<"ERROR:GetCommState error"<<endl;
                Comclose( hComm );
                hComm = NULL;
                goto FuncEnd;
        }

        // izrg(ms)
        cTimeouts.ReadIntervalTimeout                        = 50;
        // izrg(ms)
        cTimeouts.ReadTotalTimeoutMultiplier        = 50;
        // izrg(ms)
        cTimeouts.ReadTotalTimeoutConstant                = 50;
        // zrg(ms)
        cTimeouts.WriteTotalTimeoutMultiplier        = 0;

        if( !SetCommTimeouts( hComm, &cTimeouts )){

                cout<<"ERROR:SetCommTimeouts error"<<endl;
                Comclose( hComm );
                hComm = NULL;
                goto FuncEnd;
        }

        PurgeComm( hComm, PURGE_RXCLEAR );
        FuncEnd:
        return hComm;
}


-------------------------------
现在想要把程序移植到linux上,windows下的COMMTIMEOUTS函数在linux对应的是什么函数呢?如果没有相应的对应函数,linux是通过什么方式实现读写时间的控制的。

如果有谁知道的话,感激不尽。

论坛徽章:
0
2 [报告]
发表于 2011-12-15 09:30 |只看该作者
没有人知道吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP