JAVA 串口程序 向下位机发送无响应

图片说明

这个是我用虚拟串口+串口调试工具调试的时候,可以看到上位机与下位机的通信正常。

图片说明

当我用下位机和串口调试工具的时候,下位机的程序就是讲上位机发送的内容再发回来,可以看到,通讯也是正常的。

图片说明

但是,当我用JAVA写的程序和下位机进行通信的时候,可以收到下位机发来的数据,我觉得串口设置的应该没有问题了,但是向下位机发送信息却没有回应。

JAVA 用的是RXTX的包,JDK版本是1.7。
以下是发送部分的

 public static void sendToPort(SerialPort serialPort, byte[] order) throws SendDataToSerialPortFailure, SerialPortOutputStreamCloseFailure {
        System.out.println("进入send程序");
        OutputStream out = null;

        try {

            out = serialPort.getOutputStream();
            out.write(order);
            out.flush();
            System.out.println("发送成");
        } catch (IOException e) {
            System.out.println("发送失败");
            throw new SendDataToSerialPortFailure();
        } finally {
            try {
                if (out != null) {
                    out.close();
                    out = null;
                }                
            } catch (IOException e) {
                throw new SerialPortOutputStreamCloseFailure();
            }
        }

    }

我想请问一下这种情况下问题应该是出现在哪一步分的呢?

—————————————————————————————————

现在已经解决了,是同步和编码的问题,下位机在接收的中断中执行的语句太多了,导致前面的数据还没处理完,后面的就来了,丢包了。其次上位机和下位机的编码格式不太一样,这个需要调整。

1个回答

fhsjzyf
fhsjzyf 谢谢,我刚刚解决了,是同步的问题
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用串口向下位机发送命令
我用串口调试助手可以发送命令 (16进制发送) 01 04 00 00 00 07 2a 2a 然后就可以正常收到回复,那我自己写代码向串口写命令,应该怎么写呢 char *buf="0x01 0x04 0x00 0x00 0x00 0x07 0x2a 0x2a ";rnwrite(fd,buf,sizeof(buf));是这么写么
USB HID 下位机向上位机发送程序
HID 通信下位机给上位机传送数据
下位机串口程序(好用)
下位机串口程序,试过好用,给点分吧。。。。。。。。。。。。。。。。
串口控制下位机程序出现问题
我所实现的功能是:上位机通过串口给PLC一个信号,PLC控制相机采集图像。程序运行一次后,在任务管理器中就关不掉了,导致修改后编译出错rnLINK : fatal error LNK1168: cannot open Debug/DEMO.exe for writingrnError executing link.exe.rnCreating browse info file...rnrnrn请问这是什么原因啊?初始化代码如下。rnrn //--------------------------------相机初始化-----------------------------------rnrn HVSTATUS status = BeginHVDevice(1, &m_hhv); //打开摄像机rn HV_VERIFY(status);rn rn m_bOpen = FALSE; //打开摄像机标志rn m_bStart = FALSE; //开始采集标志rn m_bTigger = FALSE; //触发模式标志rn m_bContinuation = FALSE; //连续采集标志rn rn m_pBmpInfo = NULL; //BMP图像信息rn m_pRawBuffer = NULL; //原始图像数据缓冲初始化rn m_pImageBuffer = NULL; //Bayer转换后图像数据缓冲区初始化rn rn for(int i=0;i<256;i++) //颜色查找表rn rn m_pLutR[i] = i;rn m_pLutG[i] = i;rn m_pLutB[i] = i;rn rn rn m_pBmpInfo = (BITMAPINFO *)m_chBmpBuf;rn // 初始化BITMAPINFO 结构,此结构在保存bmp文件、显示采集图像时使用rn m_pBmpInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);rn // 图像宽度,一般为输出窗口宽度rn m_pBmpInfo->bmiHeader.biWidth = Width/2;rn // 图像宽度,一般为输出窗口高度rn m_pBmpInfo->bmiHeader.biHeight = Height/2;rn rn rn m_pBmpInfo->bmiHeader.biPlanes = 1;rn m_pBmpInfo->bmiHeader.biBitCount = 24;rn m_pBmpInfo->bmiHeader.biCompression = BI_RGB;rn m_pBmpInfo->bmiHeader.biSizeImage = 0;rn m_pBmpInfo->bmiHeader.biXPelsPerMeter = 0;rn m_pBmpInfo->bmiHeader.biYPelsPerMeter = 0;rn m_pBmpInfo->bmiHeader.biClrUsed = 0;rn m_pBmpInfo->bmiHeader.biClrImportant = 0;rn rn /*rn * 分配原始图像缓冲区,一般用来存储采集图像原始数据rn * 一般图像缓冲区大小由输出窗口大小和视频格式确定。rn */rn m_pRawBuffer = new BYTE[Width*Height];rn ASSERT(m_pRawBuffer);rn rn rn /*分配降采样后的图像*/rn m_pHalfBuffer = new BYTE[Width*Height/4];rn ASSERT(m_pRawBuffer);rn rn rn /*rn 分配Bayer转换后图像数据缓冲rn */rn m_pImageBuffer = new BYTE[Width * Height * 3];rn ASSERT(m_pImageBuffer);rnrnrn //---------------------------------初始化PLC通信串口------------------------------rnrn hCom_plc=CreateFile("COM2",//COM2口rn GENERIC_READ|GENERIC_WRITE, //允许读和写rn 0, //独占方式rn NULL,rn OPEN_EXISTING, //打开而不是创建rn 0, //同步方式rn NULL);rn if(hCom_plc==(HANDLE)-1)rn rn AfxMessageBox("打开COM2失败!");rn return FALSE;rn rn rn SetupComm(hCom_plc,1000,1000); //输入缓冲区和输出缓冲区的大小都是1000字节rn rn COMMTIMEOUTS TimeOuts2;rn //设定读超时rn TimeOuts2.ReadIntervalTimeout=MAXDWORD;rn TimeOuts2.ReadTotalTimeoutMultiplier=0;rn TimeOuts2.ReadTotalTimeoutConstant=0;rn //在读一次输入缓冲区的内容后读操作就立即返回,rn //而不管是否读入了要求的字符。rn rn rn //设定写超时rn TimeOuts2.WriteTotalTimeoutMultiplier=100;rn TimeOuts2.WriteTotalTimeoutConstant=500;rn SetCommTimeouts(hCom_plc,&TimeOuts2); //设置超时rn rn DCB dcb2;rn GetCommState(hCom_plc,&dcb2);rn dcb2.BaudRate=9600; //波特率为9600rn dcb2.ByteSize=7; //每个字节有7位rn dcb2.Parity=EVENPARITY; //偶校验位rn dcb2.StopBits=TWOSTOPBITS; //两个停止位rn SetCommState(hCom_plc,&dcb2);rn rn rn PurgeComm(hCom_plc,PURGE_TXCLEAR|PURGE_RXCLEAR);rnrn //-------------------------------相机配置--------------------------------------------rnrn HVOpenSnap(m_hhv, SnapThreadCallback, m_hWnd); //初始化摄像机采集rn rn // HVSetSnapMode(m_hhv, CONTINUATION); //将采集模式设置为连续采集rn rn HVSetSnapMode(m_hhv, TRIGGER); //将采集模式设置为触发采集rn rn status = HVSetTriggerPolarity(m_hhv, HIGH);rn HV_VERIFY(status);rn rn /*rn * 启动数字摄像机采集图像到内存rn */rn BYTE *ppBuf[1]; rn ppBuf[0] = m_pRawBuffer; rn HVStartSnap(m_hhv, ppBuf,1); rn HV_VERIFY(status);
java写的串口发送程序
package pian;rnimport java.awt.event.*;rnimport javax.comm.*;rnimport javax.swing.*;rnimport javax.swing.event.*;rnimport java.awt.geom.*;rnimport java.awt.*;rnimport java.io.*;rnimport java.lang.Runnable;rnimport java.lang.Thread;rnclass serialFrame extends JFramernrn public JTextArea ShuruField;rn private JButton Fasong;rn private JScrollPane sumJScrollPane;rn private JTextField shijian;rn private JButton Quxiao;rn public static boolean m;rn chuansongThread t=new chuansongThread();rn public serialFrame()rn rn setTitle("串口测试程序");rn //add a panel with text fieldsrn JPanel panel=new JPanel();rn ShuruField=new JTextArea(5,25);rn ShuruField.setLineWrap(true);rn ShuruField.setWrapStyleWord(true);rn sumJScrollPane =new JScrollPane(ShuruField);rn sumJScrollPane.setVisible(true);rn ShuruField.setVisible(true);rn panel.setBackground(Color.LIGHT_GRAY);rn add(panel,BorderLayout.CENTER);rn JPanel panel2=new JPanel();rn JPanel panel4=new JPanel();rn panel4.add(new JLabel("发送的时间间隔"));rn shijian=new JTextField("1000");rn panel4.setBackground(Color.lightGray);rn panel4.add(shijian);rn panel4.add(new JLabel("请输入所要传送的数据"));rn panel.add(ShuruField);rn rn JPanel panel3=new JPanel();rn panel3.add(new JLabel(""));rn panel3.setBackground(Color.lightGray );rn panel2.add(panel4,BorderLayout.NORTH);rn panel2.add(panel3,BorderLayout.SOUTH);rn add(panel2,BorderLayout.WEST);rn panel2.setBackground(Color.lightGray);rnrn JPanel panel1 = new JPanel();rn Fasong = new JButton("发送");rn Quxiao=new JButton("取消");rn panel1.add(Fasong);rn panel1.add(Quxiao);rn add(panel1, BorderLayout.SOUTH);rn String Msg=ShuruField.getText();rn QuxiaoAction quxiaoAction =new QuxiaoAction();rn Quxiao.addActionListener(quxiaoAction);rn FasongAction fasongAction=new FasongAction(Msg);rn Fasong.addActionListener(fasongAction);rn panel1.setBackground(Color.LIGHT_GRAY);rn pack();rnrn rn private class QuxiaoAction implements ActionListenerrn rn public void actionPerformed(ActionEvent event)rn t.stopthread();rn ShuruField.setText("");rn shijian.setText("1000"); rn private class FasongAction implements ActionListenerrn rn public FasongAction(String args) rn public void actionPerformed(ActionEvent event) rn String Msg;rn int j;rn Msg=ShuruField.getText();rn j=Integer.parseInt(shijian.getText());rn t.run(Msg,j);rn rn rn rnrnclass chuansongThread extends Threadrn rn boolean runflag=true;rn public synchronized void stopthread()rn rn runflag=false;rn rn public synchronized boolean getrunflag()rn rn return runflag;rn rn public void run(String msg,int j)rn rn runflag=true;rn serial s=new serial();rn String Msg=msg;rn int i=j;rnrn tryrn rnrn while(getrunflag())rn rn s.chuansong(Msg);rn tryrn sleep(i);rn rn catch(Exception e)rn rn rn catch(Exception e)rn rn e.printStackTrace();rn rn rnrnrnrnrn rnrnrnrnpublic class serialrn rnrn public void chuansong(String Msg)rn rn String msg = Msg;rn SerialBean SB = new SerialBean(1);rn SB.Initialize();rn SB.WritePort(msg);rn SB.ClosePort();rn rn public static void main(String[] args)rn rn serialFrame frame=new serialFrame();rnrn frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);rn frame.setVisible(true);rn rnrnpackage pian;rnrnimport java.awt.*;rnimport java.io.*;rn import java.util.*;rn import javax.comm.*;rnrn/**rn *rn * This bean provides some basic functions to implement full dulplexrn * information exchange through the srial port.rn *rn */rn public class SerialBeanrn rn static String PortName;rn CommPortIdentifier portId;rn SerialPort serialPort;rn static OutputStream out;rn static InputStream in;rn serial SB;rn // ReadSerial RT;rn /**rn *rn * Constructorrn *rn * @param PortID the ID of the serial to be used. 1 for COM1,rn * 2 for COM2, etc.rn *rn */rn public SerialBean(int PortID)rn rn PortName = "COM" + PortID;rn rn /**rn *rn * This function initialize the serial port for communication. It startss arn * thread which consistently monitors the serial port. Any signal capturredrn * from the serial port is stored into a buffer area.rn *rn */rn public int Initialize()rn rn int InitSuccess = 1;rn int InitFail = -1;rn tryrn rn portId = CommPortIdentifier.getPortIdentifier(PortName);rn tryrn rn serialPort = (SerialPort)rn portId.open("Serial_Communication", 2000);rn catch (PortInUseException e)rn rn return InitFail;rn rn //Use InputStream in to read from the serial port, and OutputStreamrn //out to write to the serial port.rn tryrn rn in = serialPort.getInputStream();rn out = serialPort.getOutputStream();rn catch (IOException e)rn rn return InitFail;rn rn //Initialize the communication parameters to 9600, 8, 1, none.rn tryrn rn serialPort.setSerialPortParams(9600,rn SerialPort.DATABITS_8,rn SerialPort.STOPBITS_1,rn SerialPort.PARITY_NONE);rn catch (UnsupportedCommOperationException e)rn rn return InitFail;rn rn catch (NoSuchPortException e)rn rn return InitFail;rn rn // when successfully open the serial port, create a new serial buffer,rn // then create a thread that consistently accepts incoming signals fromrn // the serial port. Incoming signals are stored in the serial buffer.rn //SB = new SerialBuffer();rn // RT = new ReadSerial(SB, in);rn // RT.start();rn // return success informationrn return InitSuccess;rn rn /**rn *rn * This function returns a string with a certain length from the incominrn * messages.rn *rn * @param Length The length of the string to be returned.rn *rn */rn // public String ReadPort(int Length)rn //rn // String Msg;rn //Msg = SB.GetMsg(Length);rn //return Msg;rn //rn /**rn *rn * This function sends a message through the serial port.rn *rn * @param Msg The string to be sent.rn *rn */rn public void WritePort(String Msg)rn rn int c;rn tryrn rn out.write(Msg.getBytes());rn catch (IOException e) rn rn /**rn *rn * This function closes the serial port in use.rn *rn */rn public void ClosePort()rn rn //RT.stop();rn serialPort.close();rn rn rnrn我写的程序,不知道为什么老是没有法子把线程结束.rn运行出来后,就是不能点击,其它按纽.不知道哪里出了问题。现在能够无间隔发送数据.
串口向PC及发送字符程序
用串口向PC机发送字符,并在串口助手上显示
串口232向PC发送字符串程序
绝对可用,本程序亲测,向pc发送的字符串可自行改动,有汉语注释
C#串口 上位机如何向下位机发送命令和接收下位机上传的数据
上位机:pc机rn下位机:单片机rnpc机与单片机联机通信正常后,上[color=#FF0000]位机怎么向下位机发送命令[/color],单片机收到命令后开始上传预置的数据rn[color=#FF0000]请问:pc机如何下发命令和如何读取上传的数据。[/color]rn我以前对这个一点的不了解的,查了几天也了解了点串口通信rn也还是没点头绪。刚到这个公司,他们的下位机已经写好了的,只需要写上位机,可是我不知道怎么写。rn希望给位大侠指点一下,最好有代码,谢谢!急用啊!rnrnrn协议的基本格式是:rn起始位标志(1个字节)+通信协议版本号(1个字节)+设备描述(1个字节)rn+设备标识码(1个字节)+控制标识码(1个字节)+info字节长度(2个字节)rn+控制数据信息(长度不确定)+校验和码(2个字节)+结束码(1个字节) 各个字节都是以十六进制表示。
向记事本发送键盘消息无响应
我想向记事本程序发送键盘消息,比如发送一个字母A,记事本可以响应.但是实际写出来后却没有响应.rn rn MFC工程中button事件过程:rn rn HWND hwnd=::FindWindow(NULL,"无标题 - 记事本");rn rn ::PostMessage(hwnd,WM_KEYUP,'1',0);rn ::SendMessage(hwnd,WM_KEYUP,'1',0);rnrn 都没反应.rnrn 但是如果我发送的是:rn ::SendMessage(hwnd,WM_CLOSE,0,0);rn 记事本就可以被关闭。rnrn 这是为什么呢?
向窗体发送键盘消息无响应
最近学C++自认小有所成..然后向写个游戏的脚步..rnrn获取到窗体句柄后..用普通的SendMessage发送键盘消息完全无响应 试过多数消息都无响应..只有WM_DESTROY有反应..rnrn颇为郁闷..深受打击..rnrn现请求各位大大除Post/SendMessage方法外有什么方法实现..rnrn
用java编的上位机中,如何向下位机发送命令?
我最近用java编了一个上位机的程序,但是不知道怎么向下位机发送命令,请各位高手给俺指点一下,在这里先谢谢了!
串口接收和发送程序
基于串口232的接收和发送程序,同时可以讲接收到的字符显示在液晶上
VS2010串口发送程序
可实现串口二进制,十进制,十六进制的发送!
串口接收发送程序
串口接收发送程序实例,有设置窗体背景为指定图片的实例。
CC2530串口发送程序
基于CC2530芯片的串口发送程序,学习zigbee的重要资源
c++串口发送程序
程序简单明了,里面可以直接修改串口参数!点击按钮就直接发送,在商业应用中省去了很多繁琐的步骤!
f020串口发送程序
实现单片机向PC机发送字符 PC机上显示
mega16串口发送程序
mega16串口发送程序,已调试。上电自动发送。发送内容在程序里改动。
简单的串口发送程序
串口数据发送,MFC简单的串口控件编程,以及发送数据
串口发送程序
串口的发送程序,可以打印输出发送的内容,采用串口查询方式
msp430串口发送程序
5438,没加看门狗,压力采用ADC通道2,板载电压是通道0,用一个adc_work_flag标识,修改只在原CS1168中。 用户可根据需求自习更改使用,可以移植到其他设备
18b20 串口发送程序
18B20采集温度通过串口发到PC上可以用串口精灵看
MSP430 串口发送程序
MSP430中的UART串口发送程序,其中括波特率的设置,端口初始化等
MSP430串口发送程序
MSP430串口发送程序MSP430串口发送程序
串口异步通信,发送程序。
串口异步通信,发送程序,8279键盘数据经串行口发送显示。
串口发送程序的问题
我用CMsComm控件作了一个串口发送程序。好像没有发送出去,不知道什么原因?另外有什么方法或工具可以检测是否发送成功?
python+pyqt串口发送程序
基于python+pyside开发的串口发送软件,支持4路串口发送。发送内容为txt文档,按行发送,可选择发送频率,发送内容可在界面实时显示。自用软件,仅供python+pyqt串口开发人员参考。
pcomm串口发送程序
win7环境,X64平台,VC++2008,串口发送例程
mini2440串口发送程序
能够实现mini2440开发板与电脑串口通信。程序中有详细的注释,适合致力于裸机开发者。
单片机串口发送程序
资料完整,详细的资源描述有机会获得我们的推荐,更有利于他人下载,赚取更多积分。
上位机的串口发送程序
单片机的串口发送程序,喜欢电子的朋友需要好好看。
下位机串口驱动
串口驱动,做上位机时,下位机连上电脑显示不出串口时,则需要安装此串口驱动,以获取设备的串口号。
串口示波器下位机
类型:源代码 编译器:CARM(keil for arm) 时间: 功能:s64负责采集数据,通过串口上传pc。 涉及到ADC,PIT,UART,中断等, 可以作为入门的例程来看。 现在S64(atmel的ARM7)也很便宜。
基于avr的串口升级用上、下位机程序
1.内含avr单片机下位机源码c程序,本人在atmega128单片机上已经成功运行,能够和资源内的上位机程序配合进行程序升级。 2.c程序里有修改指南;大家根据自己的cpu型号,对c程序进行相应的修改。 3.c程序的运行环境为iccavr的7.0版本;打开c源码工程后,首先要添加头文件路径(不懂的自行搜索学习该软件入门),否则会报错找不到头文件。 4.如果你用的是atmeg128单片机,那么直接烧录带的hex文件就好了,不要对程序做任何改动和编译。烧录hex的方法自行搜索学习。 5.烧录完成后,要设置单片寄的复位地址(默认是从0000启动,编程熔丝bootrst=0,使其从boot区启动)。 6.最后就可以和上位机进行配合进行程序的串口升级。
如何验证下位机的串行发送程序
我现在没有芯片,只是在keilc中写的串行通信程序,我想验证一下它能不能实现发送字节,只有一台的情况下该如何做?其中发送字节程序是?rnrnvoid sendbyte(unsigned char word) rn rn SBUF=word; rn while(TI==0); rn TI=0; rn
java 串口接收发送
Java编写了一个串口收发程序 带界面的和不带界面的 加不加监听的都有可以找我要 乐于奉献
为什么串口发送超过8000bytes的数据,下位机就接收失败?
[code=C/C++]/**rn* 打开串口,USB的时候不需要该函数rn**/rnHANDLE CSerialPort::OpenPort(LPCTSTR sPort,DWORD dwBaudRate,BYTE byDataBits,rn BYTE byParity,BYTE byStopBits,BOOL bSynchronization)rnrn bool bFlagTry = FALSE; //指示是否正常退出了try块rn TCHAR szPort[10] = 0;rn _tcscpy(szPort,_T("\\\\.\\"));//在COM10以上的必须这样写rn _tcscat(szPort,sPort);rnrn DWORD dwFlag = 0;rn if (bSynchronization)rn rn dwFlag = 0;rn rn elsern rn dwFlag = FILE_FLAG_OVERLAPPED;rn rnrn if (m_hCom!=INVALID_HANDLE_VALUE)rn rn m_hCom=INVALID_HANDLE_VALUE;rn ::CloseHandle(m_hCom);rn rnrn __tryrn rn m_hCom = CreateFile(szPort,//szPort,rn GENERIC_READ|GENERIC_WRITE,rn 0, //独占模式rn NULL,rn OPEN_EXISTING,rn dwFlag,rn NULL);rnrn if (m_hCom==INVALID_HANDLE_VALUE)rn rn __leave;rn rnrn if (SetupComm(m_hCom,2048,1024)==0)rn rn __leave;rn rnrn if (PurgeComm( m_hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR| PURGE_RXCLEAR )==0)rn rn __leave;rn rnrnrn DCB dcb; //定义dcb对象rn if (!GetCommState(m_hCom,&dcb))rn rn __leave;rn rnrn COMMTIMEOUTS ct;rn GetCommTimeouts(m_hCom, &ct);rn ct.ReadIntervalTimeout = 500;rn ct.ReadTotalTimeoutConstant = 1000;rn ct.ReadTotalTimeoutMultiplier = 1000;rn ct.WriteTotalTimeoutConstant = 0;rn ct.WriteTotalTimeoutMultiplier = 0;rnrn if (!SetCommTimeouts(m_hCom, &ct))rn rn __leave;rn rnrnrn dcb.Parity = byParity; //获得校验方式rn if (byParity!=NOPARITY)rn rn dcb.fBinary = TRUE; //允许校验rn rn dcb.BaudRate = dwBaudRate; //获得通信速率rn dcb.ByteSize = byDataBits; //数据位数rn dcb.StopBits = byStopBits; //停止位rnrn dcb.fOutxCtsFlow = FALSE; //流量控制rn dcb.fOutxDsrFlow = FALSE;rn dcb.fOutX = FALSE;rn dcb.fInX = FALSE;rnrn /* dcb.BaudRate=dwBaudRate; //波特率为9600rn dcb.ByteSize=byDataBits; //每个字节有8位rn dcb.Parity=NOPARITY; //无奇偶校验位rn dcb.StopBits=TWOSTOPBITS; //两个停止位rn */ //SetCommState(m_hCom,&dcb);rnrnrnrn // 将设定的参数值用于该串口rn if (!SetCommState(m_hCom,&dcb))rn rn __leave;rn rn bFlagTry = TRUE;rn //end tryrn __finallyrn rn // if(AbnormalTermination())rn if (!bFlagTry)rn rn m_dwError = GetLastError();rn TRACE(L"%d\r\n",m_dwError);rn if (m_hCom!=INVALID_HANDLE_VALUE)rn rn ::CloseHandle(m_hCom);rn m_hCom=INVALID_HANDLE_VALUE;rn rn rn rnrn return m_hCom;rnrn[/code]rn我是这样设置串口的,当发送数据大小是7000byte的时候就ok,rn为什么串口发送超过8000bytes的数据,下位机就接收失败?
怎么实现两个串口同时接收下位机发送的bmp数据
两个指纹模组,需要同时将采集的数据通过串口传到上位机里,为什么要等一个模组数据传输完成后,采开始传输第二个模组的数据,我两个模组是同时发送的数据。定义2个接受函数rn //添加接收函数rn serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived_1);rn serialPort2.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived_2);rn为什么必须要等第一个完成,才会触发第二个串口的接受事件??rn //接收事件rn private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)rn private void port_DataReceived_2(object sender, SerialDataReceivedEventArgs e)rnrn可以实现同步传送吗?,不要一先一后,这样很浪费时间,哪位帅哥美女指导一下,不胜感激!
怎么监视串口发送程序发送的内容?
如题。rn我想做一个Linux下的文曲星下载程序,可是不知道它的通信协议。rn哪位大哥帮个忙,告诉我有什么程序能够帮忙分析串口协议的rn谢谢了。
51单片机下位机数据采集与数据发送
51单片机下位机数据采集与数据发送c语言源程序 51单片机下位机数据采集与数据发送c语言源程序
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表