超简单问题: 打开串口失败得到一个不可用THandle,对此THandle不用调用closehandle()了吧?

Storm2008 2009-02-19 07:33:15

超简单问题: 打开串口失败得到一个不可用THandle,对此THandle不用调用closehandle()了吧?

简单
我却不敢确定。。。
//---------------------------------------//

对于正常打开串口得到的handle,成功调用closehandle()后其值非零,该怎么判断这个handle是否可用?就是判断能否向该handle代表的设备写数据?


写程序很菜。。。
语文更是没学好。。。
凑活看吧

...全文
295 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gwhdaxia 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liangpei2008 的回复:]
Delphi(Pascal) code
CreateHandle
OpenHandle
if Getlasterror=XXXX then exit;
try
XXXXXXX
finally
CloseHandle;
end;
[/Quote]

UP
liangpei2008 2009-02-20
  • 打赏
  • 举报
回复

CreateHandle
OpenHandle
if Getlasterror=XXXX then exit;
try
XXXXXXX
finally
CloseHandle;
end;
zhaozhen2004 2009-02-20
  • 打赏
  • 举报
回复
VC中就像两位星星说的一样。成功才有HANDLE,否则是-1,或无效句柄。
starluck 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ahjoe 的回复:]
我是来看星星的
[/Quote]
ahjoe 2009-02-19
  • 打赏
  • 举报
回复
我是来看星星的
Storm2008 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 starluck 的回复:]
closehandle() 返回的TRUE值。 你说的非零是前建立串口的HANDLE吧? 那个只是一个变量,不会因为CLOSEHANDLE而变为0的,除非你这样处理


Delphi(Pascal) code

vHwnd : Hwnd;

if CloseHanle(vHwnd ) then vHwnd := 0;

这样也方便你下次的判断
[/Quote]


我现在就是这么做的,但总觉的应该有更好的方法处理,所以就问了问。
谢谢了~
starluck 2009-02-19
  • 打赏
  • 举报
回复
closehandle() 返回的TRUE值。 你说的非零是前建立串口的HANDLE吧? 那个只是一个变量,不会因为CLOSEHANDLE而变为0的,除非你这样处理



vHwnd : Hwnd;

if CloseHanle(vHwnd ) then vHwnd := 0;

这样也方便你下次的判断
Storm2008 2009-02-19
  • 打赏
  • 举报
回复
谢谢了两位了~



对于正常打开串口得到的handle,成功调用closehandle()后其值非零,此时该如何判断能否向该handle代表的设备写数据?
不判断的话继续Writefile又该提示错误了
starluck 2009-02-19
  • 打赏
  • 举报
回复
就喝了点止咳药,僵哥就来了。呵呵
starluck 2009-02-19
  • 打赏
  • 举报
回复
If the function fails, the return value is INVALID_HANDLE_VALUE. To get extended error information, call GetLastError.

不需要的,建立成功才会返回HANDLE,才需要CLOSEHANDLE
如果出错了,通常是返回 -1 ,即失败
僵哥 2009-02-19
  • 打赏
  • 举报
回复
打开Handle失败,一般是返回0(NULL)或者INVALID_HANDLE_VALUE。打开失败,不需要CloseHandle。

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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