C#达人进来帮帮忙啊!!! C#如何模仿AccessPort侦听串口数据啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://download.csdn.net/source/1816409 AccessPort不了解串口可以使用serialport控件 serialport这个软件很强大的,serialport好像不能侦听 用serialport 控件,编程 ,模拟实现accessport serialport应该可以的。你是想实时监听下位机往上发的数据还是? SerialPort spSend; //spSend,spReceive用虚拟串口连接,它们之间可以相互传输数据。spSend发送数据SerialPort spReceive; //spReceive接受数据TextBox txtSend; //发送区TextBox txtReceive; //接受区Button btnSend; //数据发送按钮delegate void HandleInterfaceUpdateDelegate(string text); //委托,此为重点HandleInterfaceUpdateDelegate interfaceUpdateHandle;public void InitClient() //窗体控件已在初始化{ interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(UpdateTextBox); //实例化委托对象 spSend.Open(); //SerialPort对象在程序结束前必须关闭,在此说明 spReceive.DataReceived += Ports.SerialDataReceivedEventHandler(spReceive_DataReceived); spReceive.ReceivedBytesThreshold = 1; spReceive.Open();}public void btnSend_Click(object sender,EventArgs e){ spSend.WriteLine(txtSend.Text);}public void spReceive_DataReceived(object sender,Ports.SerialDataReceivedEventArgs e){ byte[] readBuffer = new byte[spReceive.ReadBufferSize]; spReceive.Read(readBuffer, 0, readBuffer.Length); this.Invoke(interfaceUpdateHandle, new string[] { Encoding.Unicode.GetString(readBuffer) });}private void UpdateTextBox(string text){ txtReceive.Text = text;} 在SerialPort类中有DataReceived事件,当串口的读缓存有数据到达时则触发DataReceived事件,其中SerialPort.ReceivedBytesThreshold属性决定了当串口读缓存中数据多少个时才触发DataReceived事件,默认为1。 谢谢,这样做只能在这个程序里发送和接收,如果想接收其它程序发送的就不行了,比如用A.exe发送,用B.exe来接收,那这样就不行了!我现在就想知道第二种情景如何接收数据 AccessPort 要是运行着同样你另外一个程序也是不能用AccessPort监听的哪一个串口的。 AccessPort可以的,不过你得先打开AccessPort,再开其它的程序 。。那就是我忘了好长时间没写哪方面的了。应该是会报错的吧因为COM1一直让accessPort 一直占用着。另外一个程序要是用COM1的话,应该报错吧。 不会报错,不知道accessPort 是怎么操作的 真心求教 C# 程序设计中,bmp,ico等文件存在哪?资源文件的几种方式?? string.compare与Equals的区别 请问,如何设置组合键? 如何判断一个树点,是否有子节点啊?(谢谢了,在线) 除过语法外,在.net 中,VB.net 与C#有什么区别? datagridview里如何把从xml里解析的数据绑定到combobox上 如何将文件以二进制保存到数据库 好烦啊同样的问题天天看到,叫人都不想上来了!咳咳,谁能管管 请教关于 c#中 sidebar用法 如何把文本文件中横排文字变为竖排 求助(正则表达式)
串口可以使用serialport控件
你是想实时监听下位机往上发的数据还是?
SerialPort spReceive; //spReceive接受数据
TextBox txtSend; //发送区
TextBox txtReceive; //接受区
Button btnSend; //数据发送按钮
delegate void HandleInterfaceUpdateDelegate(string text); //委托,此为重点
HandleInterfaceUpdateDelegate interfaceUpdateHandle;public void InitClient() //窗体控件已在初始化
{
interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(UpdateTextBox); //实例化委托对象
spSend.Open(); //SerialPort对象在程序结束前必须关闭,在此说明
spReceive.DataReceived += Ports.SerialDataReceivedEventHandler(spReceive_DataReceived);
spReceive.ReceivedBytesThreshold = 1;
spReceive.Open();
}public void btnSend_Click(object sender,EventArgs e)
{
spSend.WriteLine(txtSend.Text);
}public void spReceive_DataReceived(object sender,Ports.SerialDataReceivedEventArgs e)
{
byte[] readBuffer = new byte[spReceive.ReadBufferSize];
spReceive.Read(readBuffer, 0, readBuffer.Length);
this.Invoke(interfaceUpdateHandle, new string[] { Encoding.Unicode.GetString(readBuffer) });
}private void UpdateTextBox(string text)
{
txtReceive.Text = text;
}