应该感谢那些指出你错误的人

借我三千虎骑,复我泱泱中华!

博客园 首页 新随笔 联系 订阅 管理
项目需要写个扫描的程序,原来是用VB做的,用的也是很好!不知道是不是客户心血来潮,现在竟然要加到.NET平台下,用C#来实现。

早就听说了C#对串口的支持不是很好,一用还真是的 。

找到了MSComm.ocx 之后把他COPY到SYSTEM32下面,写了个注册表文件,把这个给注册一下
REGEDIT 
HKEY_CLASSES_ROOT\Licenses = Licensing: Copying the keys may be a violation of established copyrights. 

// The MsComm32 Control License follows: 
HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905 = kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
以.reg的文件名保存,双击打开即可注册。

然后在窗体的form_load事件中加入如下代码:
 1 try
 2             {
 3                 axMSComm2.CommPort=1;
 4                 this.axMSComm2.PortOpen=true;    
 5             }
 6             catch
 7             {
 8                 cm.Msg("串口通讯失败!");
 9             }
10             finally
11             {
12 }
值得注意的是:加入两个MSComm控件,你会发现这里MSComm的默认名字是axMSComm,有点奇怪吧!

然后再在axMSComm2_OnComm 事件中加入如下代码:
if(axMSComm2.CommEvent==2)
                {
                    
this.ProEAN.Text=ProEAN.Text+axMSComm2.Input;
               }
这里是用2口扫描,这个时候一定要注意把axMSComm2 的RTSEnable这个属性设置为:1。
按道理来说这个时候应该可以进行扫描,至于其他的业务处理,就需要另外加了。
但是,我觉得C#的支持不好就体现在这里。大多数的情况下扫描的很好,但是有的时候老是连不上,老是catch,真搞不明白!



posted on 2006-04-04 07:53  落拓孤鸿  阅读(2131)  评论(2编辑  收藏  举报