SerialPort CurrentPort = null;
CurrentPort = new SerialPort();
CurrentPortReadBufferSize = 128;
CurrentPortPortName = comName; //端口号
CurrentPortBaudRate = bandRate; //比特率
CurrentPortParity =parity;//奇偶校验
CurrentPortStopBits = stop;//停止位
CurrentPortDataBits = databit;//数据位
CurrentPortReadTimeout = 1000; //读超时,即在1000内未读到数据就引起超时异常
//绑定数据接收事件,因为发送是被动的,所以你无法主动去获取别人发送的代码,只能通过这个事件来处理
CurrentPortDataReceived += Sp_DataReceived;
CurrentPortOpen();
定义一个变量 byte[] receiveStr;
//绑定的事件处理函数
private static void Sp_DataReceived(object sender, SystemIOPortsSerialDataReceivedEventArgs e)
{
SerialPort sp = sender as SerialPort;
if (sp == null)
return;
byte[] readBuffer = new byte[spReadBufferSize];
spRead(readBuffer, 0, readBufferLength);
//赋值
receiveStr=readBuffer;//当然你可以通过转换将byte[]转换为字符串。
}
//你要求的按钮事件可以这么写
private void button1_Click(object sender, EventArgs e)
{
if(receiveStr!=null)
{
变量 xxx=receiveStr;
}
}你的称重器是电子的吗,可以调数据发送方式的吧,建议你把它调成手动发送,就是按一下确定就发送一次数据,根据你提供的数据帧,仔细观察会发现,你的数据帧长度为12,你看下称重器的说明书,看第几帧到第几帧是真是的数据(估计是用十六进制表示的),然后转化成10进制就是你要的称重物品的重量不能实现在显示的同时输出到文本。只能二选其一。如果要实现输出到文本的话,可以使用重定向 *** 作符pingzhidaobaiducom>c:\ping_resulttxt如果想要在atxt文件中追加的话,用下面这行命令pingzhidaobaiducom>>c:\ping_resulttxt
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)