6493|16

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:串口通讯问题? [复制链接]

我用下面语句打开一个开发板上的串口:
hCom=CreateFile(L"COM1:",//COM1口
  GENERIC_READ|GENERIC_WRITE, //允许读和写
  0, //独占方式
  NULL,
  OPEN_EXISTING, //打开而不是创建
  0,
  NULL);
if(hCom==(HANDLE)-1)
{
  MessageBox(_T ("打开失败"),
        _T ("Error"), MB_ICONINFORMATION | MB_OK);
  return FALSE;
}
但不知道为什么总显示打开失败,但用别的设备测试发现板子上的串口是好的,不知道是什么原因?还请各位高手指点。谢谢

最新回复

"但用别的设备测试发现板子上的串口是好的"这句话什么意思,能不能讲明白点?  详情 回复 发表于 2008-8-24 11:32
点赞 关注

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
COM1 口被其它程序占用的可能性很大,试着打开 COM2 口。
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

同意1楼的,一般情况下com1本来就是内核用于输出调试信息的。占用的可能性很大。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

4
 
首先谢谢上面二位,但我当时把串口2,串口3都试过了,
还是打开失败,不知道为什么?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

5
 
不要瞎改,要确认以下几点:

1.板子的调试口是那个
2、看注册表中COM1 的驱动是否已经正常加载了。
3.测试程序在其他地方是否运行正确。
4、再看你硬件电路是否有问题了。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢!我试一下,但不知怎么在开发板上查看注册表?
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

7
 
你是拿什么开发程序的,那个里边肯定有的,一般的开发软件都会带着个的,在tools里找找
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

8
 
我是用pb定制sdk,用evc开发应用程序软件,难道在evc中察看?在问一下com1的驱动有什么标志吗?谢谢
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 5 楼 jushilq 的回复:
谢谢!我试一下,但不知怎么在开发板上查看注册表?

platform.reg在里面找找COM就有了
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

10
 
使用getlasterror()看下问题到底是什么,再做决定怎么处理。。。。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
我想用下面函数在wince下获取 串口打开失败 错误信息:
void __fastcall TSerialPort::ProcessErrorMessage(char* ErrorText)
{
char ErrorMsg[400];
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER| //自动分配消息缓冲区
FORMAT_MESSAGE_FROM_SYSTEM, //从系统获取信息
NULL,GetLastError(), //获取错误信息标识
MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),//使用系统缺省语言
(LPTSTR)&lpMsgBuf, //消息缓冲区
0,
NULL);
sprintf(ErrorMsg, ""%s" 由于以下错误而失败: %s",ErrorText,lpMsgBuf);
Application->MessageBox(ErrorMsg, "错误", MB_ICONSTOP);//弹出错误提示框
LocalFree(lpMsgBuf);
}
但却出现错误:
error C2653: 'TSerialPort' : is not a class or namespace name
error C2065: 'Application' : undeclared identifier
error C2227: left of '->MessageBoxW' must point to class/struct/union
由于我是个新手,还请哪位高手指点一下:
TSerialPort和Application指的是什么意思?用上面的函数检查错误是不是要用到什么头文件?
小弟先谢谢了!!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

12
 
请问 出错码=55 是什么问题?谢谢
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

13
 
是由于缺少驱动吗?
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

14
 
55 = 指定的网络资源或设备不再可用
0x55 = 本地设备名已在使用中
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

15
 
打开失败有很多原因的!    比如说串口被占用了,硬件流没控制好!! 我这里有示例和代码,可以找我,qq:619121698

顺便接分
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

16
 


void __fastcall TSerialPort::ProcessErrorMessage(char* ErrorText)

是别人在c++中类的一个成员函数,你当然不能直接用,把__fastcall TSerialPort::去掉
变成用
void ProcessErrorMessage(char* ErrorText)

但里面有的东西也要改写,
另他就是调用了系统函数 FormatMessage ,来得到错误码的具体含义,你其实可以直接调用。


3楼的讲法可能性还是很大的,编译的NK如果是打开调试信息的,那你com1可能就是被系统用了
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(初级)

17
 
"但用别的设备测试发现板子上的串口是好的"这句话什么意思,能不能讲明白点?
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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