我要实现的功能是:计算机上一个软件,用这个软件把一些数据通过USB接口发送出去。
原来这个软件是使用串口发送数据的,现在要改成通过USB发送数据。
用串口的可以用createfile实现通讯,那么用USB要用什么呢?
是不是还要写驱动什么的?
注:发送的是16进制的数据:00 01 AF之类的
原来这个软件是使用串口发送数据的,现在要改成通过USB发送数据。
用串口的可以用createfile实现通讯,那么用USB要用什么呢?
是不是还要写驱动什么的?
注:发送的是16进制的数据:00 01 AF之类的
解决方案 »
- 提示:error LNK2001: 无法解析的外部符号 "class Linklist link" (?link@@3VLinklist@@A)
- 求助,MSSQL执行事务出错!!!
- WINDOWS 并口 串口 可以共享么?
- 请问怎么在对话框(CDialog)上画一个实心的红圆,最好给出一段示范代码,谢谢!
- 请教按钮单击事件响应的问题。
- 几乎是含着泪看完了这篇文章,既震惊,又无奈,差距太大太大了
- 调用Sleep时发生奇怪问题
- 完整的DIB在buffer里面,怎么转换可以用SetBitmap()显示在界面上?
- _bstr_t这么用发生内存泄露吗?
- 如何让程序可接收命令行参数?也就是“myapp.exe /s”,看过前面的帖子,似乎太简单,能不能举个较完整的例子???
- 如何用installshield執刪.msi檔
- 请问哪有测试网络流量的vc源代码?
比如我现在就是电脑和单片机通讯,是买个USB转232的那种转接头,驱动是在USB转232的转接头里面提供,还是和上位机通讯的那种芯片会提供驱动呢?
不是太明白你说的意思,如果你最终想以232来通讯,买个USB转的可以,会提供驱动给你的,如果你想PC与你的设备通过USB连接,那看你的设备是不是HID设备了,不是的话还是写个驱动吧。HID设备windows带有驱动,但你的设备要符合HID的协议
1 在上位机中用writeFile()
2 在驱动中Write()函数中有这样的函数:
PURB pUrb=Ep1Out.BuildInterruptTransfer( pBuffer, //发送数据的缓冲区
writeSize, //发送数据的数据字节数
FALSE, //FALSE表示设备传输的字节少数不可以于指定的字节数
NULL, //连接下一个传输的URB,这里没有,置为NULL
NULL, //指向一个已经存在的URB。置为NULL,分配一个新的URB
FALSE); //FALSE表示发送数据
这个函数用来发送。
KUsbPipe Ep1Out; // Pipe for USB endpoint address 1, type INTERRUPT如果不明白你可以baidu那个“computer00”的驱动示例程序,适合你。
比如我现在就是电脑和单片机通讯,是买个USB转232的那种转接头,驱动是在USB转232的转接头里面提供,还是和上位机通讯的那种芯片会提供驱动呢?当你写一个用串口来发送数据的程序的时候,而你的电脑又没有串口的时候才用转接头。你现在是要用USB通信, 还要转接什么呀。。
使用驱动的原因是:设备数据的读写,可能具有某些特定格式,设备商就封装起来,提供函数给我们使用
上面的话是否正确?2、如果原来的设备提供的是RS485、RS232之类的通讯口,如果购买了USB转RS232、RS485的转换头,是不是可以像使用串口一样,直接用API函数CreateFile直接进行读写?当然前提是安装了这些转换头的驱动软件。
这些转接头是怎么实现的?虚拟串口?不知道我上面的想法是否正确?
驱动程序的意义不是你想的这个,驱动程序不是因为特殊格式的数据而存在,而是你要想与硬件打交道,就必须通过应用程序调用驱动程序的方式。
2 是可以直接用CreateFile直接读写。就像直接操作串口一样。
对,原理是虚拟串口。即转换头的驱动虚拟出一个串口,然后再把针对该串口的操作转化为对USB的调用。