• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

如何在.net程序中接收windows消息

wanliguout 2004-10-25 04:13:27
我想写关于串口通讯的程序,虽然可以拥win32 api ReadFile,可我不能老去ReadFile吧,我希望能够在串口中有内容时得到通知,请各位帮忙,谢谢
...全文
228 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dazhu2 2004-10-26
没有接触过,帮你顶一下
回复
张海霖 2004-10-26
回复
wanliguout 2004-10-26
真的没更好的办法了吗
回复
zhongwanli 2004-10-26
没这方面的研究,帮你顶吧
回复
Yashmak 2004-10-26
用从NativeWindows中派生你的窗口,并且重写.WndProc方法
回复
wanliguout 2004-10-26
我找到了答案
回复
wanliguout 2004-10-25
那个mscomm挺烂的,在处理二进制报文很烦,而且感觉还有其他毛病,我在VC中都是自己通过多线程直接处理串口事件,可在.net下似乎这些东西都不可能了。
messagequeue是不是效率满低啊,而且这样做我需要混合编码吧,先用VC程序来处理串口事件,然后把收到的数据发过来,感觉有些浪费效率,而且是不是太麻烦了点啊,有没有直接一点的啊
回复
xiaohutushen 2004-10-25
up
回复
xiaoslong 2004-10-25
使用控件
回复
hivak47 2004-10-25
用mscomm控件可以,用winapi也可以的。
回复
wnlovezxm 2004-10-25
good!
回复
xu123 2004-10-25
我还是比较喜欢直接调用winapi
回复
happyjun2000 2004-10-25
新建一个专用队列:ydzjgqueue
发出消息:
MessageQueue myMq=new MessageQueue(@".\private$\ydzjgqueue");
myMq.Send(tempCmd.outputData,tempCmd.id.ToString(),System.Messaging.MessageQueueTransactionType.Automatic);
配置文件:
<add key="msmqPath" value=".\private$\ydzjgqueue"></add>

接收消息:
Dim MsgPath As String = System.Configuration.ConfigurationSettings.AppSettings("msmqPath")
Dim MsgQue As MessageQueue = New MessageQueue(MsgPath)

Dim Fmt As XmlMessageFormatter = CType(MsgQue.Formatter, XmlMessageFormatter)

If (Not MessageQueue.Exists(MsgPath)) Then
System.Messaging.MessageQueue.Create(MsgPath)
End If

''定义接收消息类型
Fmt.TargetTypeNames = New String() {"System.String,mscorlib"}

'' 添加消息接受到时的处理
AddHandler MsgQue.ReceiveCompleted, New ReceiveCompletedEventHandler(AddressOf OnReceiveCompleted)

''启动异步接收方式
MsgQue.BeginReceive()
回复
jimh 2004-10-25
使用api可以,不过更好的办法是使用控件,例如mscomm控件
回复
linaren 2004-10-25
http://community.csdn.net/Expert/topic/3401/3401234.xml?temp=.8315546
回复
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2004-10-25 04:13
社区公告

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