C#打开串口问题

jason176374 2010-11-04 02:56:18
使用CreateFile打开串口。
系统启动,第一次打开,正常。

程序关闭,在打开程序,串口打开失败,使用
GetLastError查看,Errorcode是12,访问码无效。

大家帮我分析分析,谢谢。

注:程序结构已经如此,不要再说使用C#控件代替API的建议。
...全文
591 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
niuniu5202011 2011-08-12
  • 打赏
  • 举报
回复
不理解 0.0
jason176374 2010-11-04
  • 打赏
  • 举报
回复
追加了一下LOG,可能发现问题了。

现在我的程序结构是这样的。
应用程序 A 界面显示
类库 B, 操作串口

我在B的析构函数中调用了CloseHandle。
但是LOG发现,在A程序关闭的时候,没有调用该析构函数。
因此没有CloseHandle
jason176374 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyazhe 的回复:]
#define ERROR_INVALID_ACCESS 12L

没看到代码,猜不出来问题。
[/Quote]

// 打开串口|
hComm = CreateFile(Port, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if (hComm == INVALID_HANDLE_VALUE)
{
iLastError = GetLastError();// 12L
}

access mask 应该是说GENERIC_READ | GENERIC_WRITE
jason176374 2010-11-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chenxicheng 的回复:]
程序启动先判断串口是否打开
如果打开就先关闭
那样比较好点

然后再CreateFile打开串口。
[/Quote]

求方法。
如何判断串口是否打开?
如果其他程序占用,也能关闭?

恐怕不行吧
兔子-顾问 2010-11-04
  • 打赏
  • 举报
回复
#define ERROR_INVALID_ACCESS 12L

没看到代码,猜不出来问题。
chenxicheng 2010-11-04
  • 打赏
  • 举报
回复
程序启动先判断串口是否打开
如果打开就先关闭
那样比较好点

然后再CreateFile打开串口。
jason176374 2010-11-04
  • 打赏
  • 举报
回复
调用过CloseHandle了。
TITI_Yu 2010-11-04
  • 打赏
  • 举报
回复
打开后关闭了吗?好像如果没有关闭想再次打开的时候会出现问题的。

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧