wince 与 pc 通过usb线虚拟串口通信

时间:2020-12-27 03:58:42
wince 与pc 通过usb线连接,wince的bsp制作时已经选择了将usb 虚拟成串口1。现在想通过虚拟串口与pc通信。
网上查了好多资料,还是不太理解。请问此时wince上开发应用程序A,A像串口操作一样对usb虚拟成的串口1进行操作。
pc端要想与wince通信,需要做什么?已经安装了ActiveSync,这个可以正常工作。
pc端要怎么编写应用程序,请说详细点好么,谢谢各位,愁死我了快。
CreateFile(hFile,....)这个句柄hFile怎么怎么确定?pc端是像操作串口一样操作么?还是进行usb操作?

20 个解决方案

#1


CreateFile(hFile,....)这个句柄hFile怎么怎么确定?
--->只要知道你的usb 虚拟成串口1对应的驱动的名字就可以了啊

pc端是像操作串口一样操作么?还是进行usb操作?
---》像操作串口一样操作啊。

#2


可能我没将清楚。在wince上,应用程序A调用串口打开wince的虚拟串口1
我把usb接到pc上,不知道pc上会虚拟成那个串口。所以,pc上的应用程序B不知道打开那个串口。
这个串口跟wince的串口不是同一个。

是不是pc上要装驱动?

#3


引用 2 楼 testdown23 的回复:
可能我没将清楚。在wince上,应用程序A调用串口打开wince的虚拟串口1
我把usb接到pc上,不知道pc上会虚拟成那个串口。所以,pc上的应用程序B不知道打开那个串口。
这个串口跟wince的串口不是同一个。

是不是pc上要装驱动?

这个不太清楚了,但我觉得应该PC端不需要安装驱动了吧

#4


现在把wince的板子通过usb接入pc,pc的设备管理器,显示是:microsoft usb sync

#5


其实你是把USB当做串口来用是吧??然后把在PC上通过对“串口”的操作与下位机通讯?

那我觉得你要在上位机PC安装驱动了。。。USB转串口驱动。。。
我现在的开发,在笔记本的时候,可是没有串口,就用了USB转接串口的线,与ARM交互,其实是一个道理啊
在DNW中就可以使用那个特定的串口了,是根据你的PC的哪个USB口转的

PC上的程序当然得有数据接收的啊,就像ARM上对串口的操作啊,至于你说的creatfile()的句柄,我觉得在根据DNW就可以推断啊

你现在当然是PC与ARM同步了,直接接上USB,因为现在还是没有把USB线当串口用

还有,最好是固定的USB口,别乱用,这样子对某个口操作就好点了

#6


PC和USB通信,从你上面表达的意思上来看,
终端机:终端机这边是通过USB连接到PC上的,但是具体的操作模式就是这个USB虚拟出来的COM1口,所以在你的终端机器这边就createfile("COM1"...),writefile,readfile就可以把数据通过USB传到PC机器上去了
PC机:PC机这边需要去识别你的终端机,就想你插入U盘一样,当你插入U盘的时候,PC机这边的USBhost会通过windows进行一系列的枚举通信最后被windows识别为U盘,你这边也一样啊,当你把你的终端机通过USB线连接到PC机的host口后也会通过枚举等一些列的操作被windows识别啊,这个识别就需要一个windows驱动,这个驱动负责具体的通信,你的这个终端机识别为一个设备,这个设备可以是普通的IO设备,也可以是一个串口,等等,这都取决于你的windows上的驱动。然后你就可以通过createfile,writefile,readfile将数据发到终端机上。
就想ActiveSync,你装上后他其实是装了一个windows驱动的,装上了之后,你才会出现那个microsoft usb sync

#7


谢谢你们的回答.我的理解: pc端要识别我的usb设备,就需要安装驱动.这个驱动要自己写么?应该怎么写的?
我现在插入usb,可以识别出来,这个设备是
\USB#Vid_045e&Pid_00ce#00000000-3024-0801-0000-000000000000#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
接下来怎么将它当作串口读写数据呢?

#8


要把USB设备识别成串口。。。。
6楼也说得很明白了。
你现在还是USB的ARM传输设备啊,因为是安装的同步软件!!

#9


你现在的设置在PC端显示的是microsoft usb sync,不是串口,所以在PC端不能以串口的形式操作设备,你要改CE端的USB驱动,将它设置成USB CDC DEVICE,这样在PC端才能显示成一个COM。
我的USB驱动在PC端显示成串口了,但是在WINCE端不是串口的形式,我的CE端也没必要虚拟成串口形式。

实际上两端都虚拟成COM是可以实现的。

#10


该回复于2010-11-05 16:17:35被版主删除

#11


引用 7 楼 testdown23 的回复:
谢谢你们的回答.我的理解: pc端要识别我的usb设备,就需要安装驱动.这个驱动要自己写么?应该怎么写的?
我现在插入usb,可以识别出来,这个设备是
\USB#Vid_045e&Pid_00ce#00000000-3024-0801-0000-000000000000#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
接下来怎么将它当作串口读写数据呢?……



显然你这个设备名字是microsoft usb sync,可以不用他的activesync来通信,直接用这个名字来做IO createfile来做。。可以试试。。通信肯定是行。。思路就是那样的。但是这么做显然是不能作数的。。

verbol说的可以啊。。我还没有弄过USB做串口的windows驱动呢

#12


板子上操作阿

#13


http://javahigh1.iteye.com/blog/1069969
不知道楼主完成了没  我也在做这方面的  刚接触。
如果楼主已经完成了  请看一下我的帖子 给点意见
http://topic.csdn.net/u/20110908/10/56af86b3-3a02-451d-b487-9d7db023f951.html?seed=667725602&r=75544474#r_75544474
谢谢

#14


mark

#15


引用 14 楼 accessysq 的回复:
mark

引用 20 楼 accessysq 的回复:
串口调试助手如何打开wince设备。我见过的都是只能打开标准的com1,com2...comX的。
回头我不设置波特率,直接发文件看看多快。


楼主, 有结果了吗? 是不是跟平常usb通讯的速度一样? 既然用了虚拟串口, 那跟usb2.0的协议是没有关系的吧, 这样也能达到那个速度???

这是我在你的帖子上的回复, 是不是结贴了就不能再讨论了, 为啥不回我呢
这是我刚发的帖子,有什么建议请尽情发表吧
http://topic.csdn.net/u/20110922/09/e128e05d-3c95-4720-ac55-dc36150b88fd.html?seed=486731166&r=75652356#r_75652356

#16


学习了

#17


你只是在wince端做了一个"U转串",对pc机而言,你这个还是个usb设备

#18


引用 17 楼 skylkj 的回复:
你只是在wince端做了一个"U转串",对pc机而言,你这个还是个usb设备

你好, 我可以这样理解吗: 传送速度只跟硬件有关,跟软件无关? 只要硬件是usb他就能有usb应有的速度? 

#19


引用 17 楼 skylkj 的回复:
你只是在wince端做了一个"U转串",对pc机而言,你这个还是个usb设备

你好, 如果usb的另一端不停地给wince发送数据,而他是怎么发得暂时不知道,wince要接收这些数据是不是得从新写个驱动,利用现有的驱动貌似都不行吧?

#20


插入到PC,PC的PnP会问插入的是什么设备,设备要回是“串口”,PC提示安装驱动程序,驱动装好以后,在设备管理器中就可以看到虚拟的串口了。

#1


CreateFile(hFile,....)这个句柄hFile怎么怎么确定?
--->只要知道你的usb 虚拟成串口1对应的驱动的名字就可以了啊

pc端是像操作串口一样操作么?还是进行usb操作?
---》像操作串口一样操作啊。

#2


可能我没将清楚。在wince上,应用程序A调用串口打开wince的虚拟串口1
我把usb接到pc上,不知道pc上会虚拟成那个串口。所以,pc上的应用程序B不知道打开那个串口。
这个串口跟wince的串口不是同一个。

是不是pc上要装驱动?

#3


引用 2 楼 testdown23 的回复:
可能我没将清楚。在wince上,应用程序A调用串口打开wince的虚拟串口1
我把usb接到pc上,不知道pc上会虚拟成那个串口。所以,pc上的应用程序B不知道打开那个串口。
这个串口跟wince的串口不是同一个。

是不是pc上要装驱动?

这个不太清楚了,但我觉得应该PC端不需要安装驱动了吧

#4


现在把wince的板子通过usb接入pc,pc的设备管理器,显示是:microsoft usb sync

#5


其实你是把USB当做串口来用是吧??然后把在PC上通过对“串口”的操作与下位机通讯?

那我觉得你要在上位机PC安装驱动了。。。USB转串口驱动。。。
我现在的开发,在笔记本的时候,可是没有串口,就用了USB转接串口的线,与ARM交互,其实是一个道理啊
在DNW中就可以使用那个特定的串口了,是根据你的PC的哪个USB口转的

PC上的程序当然得有数据接收的啊,就像ARM上对串口的操作啊,至于你说的creatfile()的句柄,我觉得在根据DNW就可以推断啊

你现在当然是PC与ARM同步了,直接接上USB,因为现在还是没有把USB线当串口用

还有,最好是固定的USB口,别乱用,这样子对某个口操作就好点了

#6


PC和USB通信,从你上面表达的意思上来看,
终端机:终端机这边是通过USB连接到PC上的,但是具体的操作模式就是这个USB虚拟出来的COM1口,所以在你的终端机器这边就createfile("COM1"...),writefile,readfile就可以把数据通过USB传到PC机器上去了
PC机:PC机这边需要去识别你的终端机,就想你插入U盘一样,当你插入U盘的时候,PC机这边的USBhost会通过windows进行一系列的枚举通信最后被windows识别为U盘,你这边也一样啊,当你把你的终端机通过USB线连接到PC机的host口后也会通过枚举等一些列的操作被windows识别啊,这个识别就需要一个windows驱动,这个驱动负责具体的通信,你的这个终端机识别为一个设备,这个设备可以是普通的IO设备,也可以是一个串口,等等,这都取决于你的windows上的驱动。然后你就可以通过createfile,writefile,readfile将数据发到终端机上。
就想ActiveSync,你装上后他其实是装了一个windows驱动的,装上了之后,你才会出现那个microsoft usb sync

#7


谢谢你们的回答.我的理解: pc端要识别我的usb设备,就需要安装驱动.这个驱动要自己写么?应该怎么写的?
我现在插入usb,可以识别出来,这个设备是
\USB#Vid_045e&Pid_00ce#00000000-3024-0801-0000-000000000000#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
接下来怎么将它当作串口读写数据呢?

#8


要把USB设备识别成串口。。。。
6楼也说得很明白了。
你现在还是USB的ARM传输设备啊,因为是安装的同步软件!!

#9


你现在的设置在PC端显示的是microsoft usb sync,不是串口,所以在PC端不能以串口的形式操作设备,你要改CE端的USB驱动,将它设置成USB CDC DEVICE,这样在PC端才能显示成一个COM。
我的USB驱动在PC端显示成串口了,但是在WINCE端不是串口的形式,我的CE端也没必要虚拟成串口形式。

实际上两端都虚拟成COM是可以实现的。

#10


该回复于2010-11-05 16:17:35被版主删除

#11


引用 7 楼 testdown23 的回复:
谢谢你们的回答.我的理解: pc端要识别我的usb设备,就需要安装驱动.这个驱动要自己写么?应该怎么写的?
我现在插入usb,可以识别出来,这个设备是
\USB#Vid_045e&Pid_00ce#00000000-3024-0801-0000-000000000000#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
接下来怎么将它当作串口读写数据呢?……



显然你这个设备名字是microsoft usb sync,可以不用他的activesync来通信,直接用这个名字来做IO createfile来做。。可以试试。。通信肯定是行。。思路就是那样的。但是这么做显然是不能作数的。。

verbol说的可以啊。。我还没有弄过USB做串口的windows驱动呢

#12


板子上操作阿

#13


http://javahigh1.iteye.com/blog/1069969
不知道楼主完成了没  我也在做这方面的  刚接触。
如果楼主已经完成了  请看一下我的帖子 给点意见
http://topic.csdn.net/u/20110908/10/56af86b3-3a02-451d-b487-9d7db023f951.html?seed=667725602&r=75544474#r_75544474
谢谢

#14


mark

#15


引用 14 楼 accessysq 的回复:
mark

引用 20 楼 accessysq 的回复:
串口调试助手如何打开wince设备。我见过的都是只能打开标准的com1,com2...comX的。
回头我不设置波特率,直接发文件看看多快。


楼主, 有结果了吗? 是不是跟平常usb通讯的速度一样? 既然用了虚拟串口, 那跟usb2.0的协议是没有关系的吧, 这样也能达到那个速度???

这是我在你的帖子上的回复, 是不是结贴了就不能再讨论了, 为啥不回我呢
这是我刚发的帖子,有什么建议请尽情发表吧
http://topic.csdn.net/u/20110922/09/e128e05d-3c95-4720-ac55-dc36150b88fd.html?seed=486731166&r=75652356#r_75652356

#16


学习了

#17


你只是在wince端做了一个"U转串",对pc机而言,你这个还是个usb设备

#18


引用 17 楼 skylkj 的回复:
你只是在wince端做了一个"U转串",对pc机而言,你这个还是个usb设备

你好, 我可以这样理解吗: 传送速度只跟硬件有关,跟软件无关? 只要硬件是usb他就能有usb应有的速度? 

#19


引用 17 楼 skylkj 的回复:
你只是在wince端做了一个"U转串",对pc机而言,你这个还是个usb设备

你好, 如果usb的另一端不停地给wince发送数据,而他是怎么发得暂时不知道,wince要接收这些数据是不是得从新写个驱动,利用现有的驱动貌似都不行吧?

#20


插入到PC,PC的PnP会问插入的是什么设备,设备要回是“串口”,PC提示安装驱动程序,驱动装好以后,在设备管理器中就可以看到虚拟的串口了。

#21