MSComm控件与Win32 API操作串口有何区别? 我以前用MSComm控件写了串口程序,感觉不是很好用。突然断电,重起就会出现问题。错误提示:port already open! 这次想用Win32 API操作串口,是不是比MSComm控件好用? Win32 API操作232串口,边读边发数据,编程时需要注意什么吗? 请大虾们指教!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般来说,用API写出完整无缺的好程序,我觉得比较难。当然是大多都是水平问题和很多细节问题,以前写过同步方式的,98下工作非常好,但换系统后出现问题。目前的观念是用异步方式,编程用多线程。你可以参考这个帖子的讨论。http://community.csdn.net/Expert/TopicView3.asp?id=5631034 控件最终都是通过API实现的,只不过包装一下而已。 我现在水平一般,是不是还是用MSComm控件比较好?MSComm控件与API没什么区别吗?+++++++++++++++++++++++++++++++++++++++++++++++搂主 fronz() —— 误人子弟!楼主选用 Win32 API 是绝对正确的! API好用一点,反正都是自己设计的代码,出什么问题可以自己修改 to:zaodt(至尊宝宝:我就在你身旁,关心永远不打烊!) 选用 Win32 API 是绝对正确的!用API写出完整无缺的好程序,我觉得比较难。这两句有矛盾么?我当然主张用API串口编程。在原来的那个讨论贴中也是如此,只是觉得写的很满意比较困难一些(比用MS控件)。 建议楼主先用一些好的封装类编串口程序。比如CSerialPort类,里面也都有API函数的调用。慢慢自己再用API写符合自己要求的专用代码, CSerialPort类??找不到,可以给我吗?===========================搂主 其实都差不多,用api相对麻烦一些。通常在打开串口之前要判断它是否已经被打开或者被占用。 到codeproject.com上找pj.nauter的cserialport类吧,用的人一大堆. 串行通信是最简单的通信方式,如果说这个难的话,那什么USB、网络都不要做了!API + 多线程 操作串行口,你可以把程序做的很细、很强!而且,程序发布的时候,又没有那么多拖拖拉拉的东西! 控件只是一个包装。但是因为这个包装,用起来自然简单多了。通常我的观点是,掌握 API,使用空间【学习根本的,但是使用的确实相对简单的】 呵呵,说了一句“用API写出完整无缺的好程序,我觉得比较难。”就“误人子弟”了,说中国话也要有逻辑,特别是对程序员,如果我犯了逻辑错误,那会比我犯了概念错误更觉得羞愧。关于直接用API自己写难不难,是另外的问题,所以我只说了“我觉得比较难”,这只是个人看法。所有的网友,问问题也不过就是听个建议。串口编程,可以说我做了不少,也比较关注这个技术,个人觉得还是很难用API写出很完美的程序,很多的细节需要注意,DCB设置、线程间数据共享、缓冲区设置等等等等,很多,而且用API写最简单的同步方式串口程序时确实存在问题,而OverLapped方式也确实复杂很多,这些都是我亲身遇到过的。所以我建议楼主参考我推荐的帖子中jhs1982419()提供的一些资料。如果有心还可以去搜索一些。根据我的了解,目前国内搞仪器串口控制的大部分的中小企业都是用VB调用MS控件写的,少部分是借助封装类或其他控件写,用API直接写更少,何况用多线程的话必须考虑同步方式在跨平台方面出现的问题。可以这么说,能根据需要用API写出很流畅自如的串口程序,那么你可以很骄傲地去搞仪器控制的企业应聘去了。而且你可以对招聘者说,你跟龚建伟一样牛。:)以上全都是个人意见,供大家参考。 那是你自己的理解吧!如果说用VC++编写程序还要用 MSCOMM 控件的话,那还不如用VB得了。VB岂不是更简单?说白了,MSCOMM 控件其实是提供给 VC++ 以外的其它开发工具使用的。我曾经用PowerBuilder开发程序,用到了这个控件,原因是PB无法操作串行口,这也是没有办法。楼上所说的难处无非是多线程的处理,跟串行口的操作无关。不过,话又说回来了,如果你不深入VC++编程,那你的水平又怎么提高。想做出好的程序,多线程这关必须要闯过! 我来解读一下你的“程序”吧那是你自己的理解吧!-----不错,我所说的都是我的理解,难不成你的说法是大家普遍的认知?如果说用VC++编写程序还要用 MSCOMM 控件的话,那还不如用VB得了。VB岂不是更简单?说白了,MSCOMM 控件其实是提供给 VC++ 以外的其它开发工具使用的。----似乎我还在误人子弟?甚至鼓励楼主用VB调MSCOMM控件?你到底知道不知道我所说的类似CSerial,CSerialPort这类的串口封装类与你所说的MSCOMM控件有何不同?怪不得你从PB搞出来的。我曾经用PowerBuilder开发程序,用到了这个控件,原因是PB无法操作串行口,这也是没有办法。楼上所说的难处无非是多线程的处理,跟串行口的操作无关。-------楼主读写串口程序再加上前台操作,就本问题来说,可以说和多线程无关么?既然多线程本身复杂,那么直接写的那些串口读写的API函数不需考虑多线程问题么?用封装好的写多线程不清晰简单一些么?不过,话又说回来了,如果你不深入VC++编程,那你的水平又怎么提高。--------提高,这个说到点上了,当然需要提高,怎么提高?这是方法问题,有具体API函数的封装类的现成的源代码作为学习途径,不是一种提高方法么?想做出好的程序,多线程这关必须要闯过!------后后,这个还用说么?看来你是过关了,那么恭喜了,你可以不误人子弟了。 CListCtrl的单击消息 tcp服务器设计问题 来者有分 急问!mciSendCommand支持哪些视频格式?另,如何进行音视频的剪辑? 利用OpenGL实现三维绘图的问题,帮忙看一下,弄了一天了 MessageBox在VS6.0中的参数与在VS2005中的参数不同??急!急!急! 关于更新Edit控件值的问题 谁知道如何修改缺省网关? 可以实现就行。 写注册表时遇到的问题,帮忙看看 给我点建议,好吗?!!!!!!! I'm Come Back 1.点击关闭按牛时,触发了什么消息 2.内存回收问题 tree的问题 请高手解决!!!!!
当然是大多都是水平问题和很多细节问题,以前写过同步方式的,98下工作非常好,但换系统后出现问题。
目前的观念是用异步方式,编程用多线程。你可以参考这个帖子的讨论。
http://community.csdn.net/Expert/TopicView3.asp?id=5631034
MSComm控件与API没什么区别吗?
+++++++++++++++++++++++++++++++++++++++++++++++
搂主
用API写出完整无缺的好程序,我觉得比较难。这两句有矛盾么?我当然主张用API串口编程。在原来的那个讨论贴中也是如此,只是觉得写的很满意比较困难一些(比用MS控件)。
找不到,可以给我吗?
===========================
搂主
通常在打开串口之前要判断它是否已经被打开或者被占用。
用起来自然简单多了。通常我的观点是,
掌握 API,使用空间【学习根本的,但是使用的确实相对简单的】
就“误人子弟”了,说中国话也要有逻辑,特别是对程序员,如果我犯了逻辑错误,那会比我犯了概念错误更觉得羞愧。关于直接用API自己写难不难,是另外的问题,所以我只说了“我觉得比较难”,这只是个人看法。所有的网友,问问题也不过就是听个建议。串口编程,可以说我做了不少,也比较关注这个技术,个人觉得还是很难用API写出很完美的程序,很多的细节需要注意,DCB设置、线程间数据共享、缓冲区设置等等等等,很多,而且用API写最简单的同步方式串口程序时确实存在问题,而OverLapped方式也确实复杂很多,这些都是我亲身遇到过的。所以我建议楼主参考我推荐的帖子中jhs1982419()提供的一些资料。如果有心还可以去搜索一些。根据我的了解,目前国内搞仪器串口控制的大部分的中小企业都是用VB调用MS控件写的,少部分是借助封装类或其他控件写,用API直接写更少,何况用多线程的话必须考虑同步方式在跨平台方面出现的问题。可以这么说,能根据需要用API写出很流畅自如的串口程序,那么你可以很骄傲地去搞仪器控制的企业应聘去了。而且你可以对招聘者说,你跟龚建伟一样牛。:)以上全都是个人意见,供大家参考。
-----不错,我所说的都是我的理解,难不成你的说法是大家普遍的认知?如果说用VC++编写程序还要用 MSCOMM 控件的话,那还不如用VB得了。
VB岂不是更简单?说白了,MSCOMM 控件其实是提供给 VC++ 以外的其它开发工具使用的。
----似乎我还在误人子弟?甚至鼓励楼主用VB调MSCOMM控件?你到底知道不知道我所说的类似CSerial,CSerialPort这类的串口封装类与你所说的MSCOMM控件有何不同?怪不得你从PB搞出来的。我曾经用PowerBuilder开发程序,用到了这个控件,原因是PB无法操作串行口,这也是没有办法。
楼上所说的难处无非是多线程的处理,跟串行口的操作无关。
-------楼主读写串口程序再加上前台操作,就本问题来说,可以说和多线程无关么?既然多线程本身复杂,那么直接写的那些串口读写的API函数不需考虑多线程问题么?用封装好的写多线程不清晰简单一些么?不过,话又说回来了,如果你不深入VC++编程,那你的水平又怎么提高。
--------提高,这个说到点上了,当然需要提高,怎么提高?这是方法问题,有具体API函数的封装类的现成的源代码作为学习途径,不是一种提高方法么?想做出好的程序,多线程这关必须要闯过!------后后,这个还用说么?看来你是过关了,那么恭喜了,你可以不误人子弟了。