现有一个实验室设备,他有一个串口,我们的程序能不能通过这个串口去获取他每次检测的数据!!!小弟初次接触串口编程,也不知道能不能行的通,请各位前辈提供一个简单的思路,好让我依靠你们的思路下去!!
解决方案 »
- 求C#编写纯资源的DLL方法
- 菜鸟提问,TXT文本分割问题!
- RibbonControlsLibrary.dll 在哪能弄到这个文件?
- 请教:哪边有SDK For Vista 下载
- C#中调用一个VC写的ATL组件,如何在调试进入ATL的代码中调试
- DataGridView的排序,在线等!
- 请教WF问题在线等 ~~~~~
- struct时用IntPtr代替HWND会出问题吗
- C#WinForm程序关于DataGridView单元格数据居中的问题
- 图片框中使用的图片被.NET保存在哪里?
- C#2005连接数据库出错:"conn.ServerVersion"引发的“System.InvalidOperationException”类型的异常
- 求助,向imageList1.Images添加图片出错拉!!!
PC端开监听
等硬件那边发数据过来 就ok了
数据要有开始位和结束位 最好还有校验位
你的意思是不时可以这样理解,我用一台pc机和设备连接,然后程序去监听这个串口,那边设备有实据产生就会自动往这个串口发数据,我的程序只用每次接收到数据区解析他就可以了?开始位和结束位 最好还有校验位又是什么意思
开始位和结束位 最好还有校验位又是什么意思
串口发送数据是一位一位的 也就是一个个bit如果没有结束位和开始位 很容易接收乱掉
建议是 0xxxxxxxx1
一次发送10个bit 不过只有中间的8个bit是数据校验位 一般是奇偶校验 可以不考虑
serialPort1.PortName = "COM1";
serialPort1.BaudRate = 4800;//波特率
serialPort1.Parity = Parity.Odd;//校验位
serialPort1.RtsEnable = true;
serialPort1.DataBits = 8;//数据位数
serialPort1.StopBits = StopBits.One;//
serialPort1.ReceivedBytesThreshold = 1;//接收字节数发送数据:
定义一个数组:
byte[] send = new byte[4];
send[0] = 0xaa;
send[1] = 0xaa;
send[2] = 0xd0;
send[3] = 0x00;
serialPort1.Write(send, 0, 4);
接收数据:
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte r_byte;
while (serialPort1.BytesToRead != 0)
{
r_byte = Convert.ToByte(serialPort1.ReadByte());
//自己写了.接收处理. }