14934|20

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何获取已经打开的串口句柄? [复制链接]

    各位,如何获取已经打开的串口句柄?

    望执教!

最新回复

如果不行,那么应该怎样做? 望指教指教。  详情 回复 发表于 2009-8-19 16:58
点赞 关注

回复
举报

67

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
??CreateFile()返回的不就是句柄么?
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
如果串口已经打开,使用CreateFile()也一样会返回INVALID_HANDLE_VALUE。

要对已经打开,但是还没有获取到串口句柄的串口进行操作,用什么办法?

同样关注。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
LZ不会是想在进程之间传递句柄吧?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
个人感觉,做一个全局变量,然后使用函数提取这个变量,应该是可以的
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
不是,我没有把意图说明白。

我想测试串口,把测试信息发送到PC上

我使用usb转串口线,引出一个串口,usb转串口线一端连接pc的usb口,另一端连接mobile

但是当我用HANDLE hPort = CreateFile(_T("COM12:"),GENERIC_READ | GENERIC_WRITE,0,NULL,0,OPEN_EXISTING,NULL);

打开串口失败,返回INVALID_HANDLE_VALUE。

我想应该是usb转串口的过程,默认已经打开占用了串口,所以才返回INVALID_HANDLE_VALUE。

请教一下,如何处理这种情况呢?望指教
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(初级)

7
 
usb转串口成功了吗?
默认是不会占用串口的。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 91program 的回复:
usb转串口成功了吗?
默认是不会占用串口的。

转是转成功了,因为可以从PC上看到多了一个COM口
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

9
 
PC端?
下面的代码也是在PC上运行吗?
HANDLE hPort = CreateFile(_T("COM12:"),GENERIC_READ | GENERIC_WRITE,0,NULL,0,OPEN_EXISTING,NULL);
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
如果我连接一个空闲的COM口,这段代码是没有问题的。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 8 楼 91program 的回复:
PC端?
下面的代码也是在PC上运行吗?
HANDLE hPort = CreateFile(_T("COM12:"),GENERIC_READ | GENERIC_WRITE,0,NULL,0,OPEN_EXISTING,NULL);


如果能获取到这个串口的句柄,那一切应该都迎刃而解了。。。。。。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

12
 
顶帖!

继续望指教。
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

13
 
串口是程序独占性的访问,如果有其他程序打开了该串口,你就不能够继续使用了,所以知道句柄意义不大。我估计你的问题是USB转串口的驱动安装不正确,或者你打开的串口号不正确。你可以按以下思路定位问题:
1、写个程序或者找个软件扫描一下所有串口的端口,看能否找到你的设备;
2、不行的话可先测试一下你这个USB转串口线是否正常工作,找个正常的串口设备连接上,让它不停发送数据,你在PC端用超级终端之类软件来测试是否能收到。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

14
 
USB转串口线应该能正常工作,因为在程序中有printf打印一个字符串,使用PC端的串口查看软件能看到向这个字符串,也就是说USB转串口线是成功,并且是连通的。
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(初级)

15
 
也就是说PC端的串口查看工具可以正常打开该端口,而你的程序打开同一个端口却失败,是吗?
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

16
 
之前是对串口通信的机制不理解,重新阐述一下问题。
我用一条usb转串口的线,把PC的usb口引出一个串口,然后和mobile的串口线相接,在mobile端向与mobile外设连接的串口发送数据,然后希望在PC端能显示出发送的数据。CreateFile()连接成功,发送数据WriteFile()也成功了,但是在PC端的串口监控程序不能检测到我写入的数据,单步调试时读到的是一大串乱码。
后面我下载了一个mobile端的用来操作串口的应用程序,同样向相同的串口发送数据,应用程序的数据接收端也只显示一大堆乱码。
我手机OEM就说有四个串口分别COM1,2,3,6,分别对应的UART口是Serial_Modem,Serial_BT(蓝牙),Serial_GPS ,Serial_AGPS。我打开的是COM6(也就是我连接外设的串口)。
 
 
 

回复

68

帖子

0

TA的资源

纯净的硅(初级)

17
 
现在不知道该怎样做了?

望各位指教。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 10 楼 yongshi128 的回复:
引用 8 楼 91program 的回复:
PC端?
下面的代码也是在PC上运行吗?
HANDLE hPort = CreateFile(_T("COM12:"),GENERIC_READ | GENERIC_WRITE,0,NULL,0,OPEN_EXISTING,NULL);


如果能获取到这个串口的句柄,那一切应该都迎刃而解了。。。。。。

这行代码是不可能打开COM12的,打开10及其以上的COM的时候这样写是不行的,要加个什么什么东西,我忘了.....
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

19
 
乱码问题。。两边的流控设没有?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

20
 
这个不是关键所在。
我想知道的是,WM中的Serial_Modem对应的COM1能否通过我上述的连接方式和PC进行通信??
还有,上面所说的几个串口一样应用于哪方面的通信?
望指教。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表