串口通信如何发送和接收数据 [问题点数:20分,结帖人richardvip]

Bbs1
本版专家分:0
结帖率 100%
Bbs7
本版专家分:21185
Bbs2
本版专家分:133
Bbs2
本版专家分:446
Bbs1
本版专家分:45
Bbs3
本版专家分:777
Bbs1
本版专家分:53
Bbs1
本版专家分:32
串口通信接收数据
vc <em>串口通信</em>怎么按协议<em>接收数据</em>?跟modbus协议差不多的?
Qt的串口通信接收数据错误
我在win8+qt5.1.0 下开发的一个串口传输的程序,在自己电脑上运行正常。但在交给客户的时候,在他们电脑上(xp 系统)运行就出错了。经过检查,发现应该是数据接收错误的。因为如果<em>发送</em>错误,下位机就不会有任何回复,而程序接收到的数据是或多或少的。先上下代码吧,rn [code=c] for(k = 0; k < 3; k++)rn rn requestData = outdata[i][0];rn serial->write(requestData);rn if (serial->waitForBytesWritten(120))rn rn // read responsern if (serial->waitForReadyRead(2000))rn rn// serial->bytesAvailable() == 20;rn responseData = serial->readAll();rn txt << responseData.toHex() <<< "\r\n";rn if(responseData.count() == 20)rn rn save1 << electricEnergy(responseData);rn serial->readAll();rn break;rn rn else if(k == 2)rn rn save1 << "0000";rn serial->readAll();rn rn rn else if(k == 2)rn rn save1 << "0000";rn serial->readAll();rn rn rn rn QThread::msleep(waittime);[/code]rnrn代码只是一段,没有全部贴出来。rn接收到的数据是这样的:rn1 this is recived data.rnfe===1 this is recived data.rnfe===1 this is recived data.rn68===1 this is recived data.rn2 this is recived data.rn6847648680000068010243c48b16===send data 2 ;rn6847648680000068010243c48b16===send data 2 ;rn47648680000068810643c3833533332c16b62 this is recived data.rn6847648680000068010243c48b16===send data 2 ;rnff2 this is recived data.rnrn上面数据是两段接收到的数据。rn正确的接收到的数据是,以fefe开头,以16结尾的一列数据的rn比如:fefe6847648680000068810643c3833533332c16rnrn情况就是这样的,我不知道怎么修改了,大神们指点下吧!rn各位给点建议吧!
串口通信怎么接收数据啊?
现在用一个usb转串口连接到设备上,但是始终调试不通。rnrn按说明书用超级终端连接上,输入at,结果显示的是qt,按回车显示''号,总之在超级终端调试输入混乱,无法测试。rnrn在程序中打开串口,<em>发送</em>'AT\r',返回都是-15,正确返回应该是'OK'才对.rnrn但是用设备厂家提供的demo程序又可以正常通讯,demo是一个ocx调用,没有源代码,而且使用的mscomm控件,现在要直接用api操作串口。rnrnHANDLE hCom = CreateFile(_T("COM5"), rn GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); rn if (hCom == INVALID_HANDLE_VALUE)rn rn AfxMessageBox(_T("打开失败"));rn return;rn rnrn //rn DCB dcb;rn dcb.BaudRate = 4800; //波特率为4800rn dcb.ByteSize = 8; //数据位数为8位rn dcb.Parity = NOPARITY; //偶校验rn dcb.StopBits = 1; //1个停止位rn dcb.fBinary = TRUE;rn dcb.fParity = TRUE;rn BOOL bResult = SetCommState(hCom, &dcb);rnrn SetupComm(hCom, 1024, 1024);rn PurgeComm(hCom, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);rnrn COMMTIMEOUTS to;rn memset(&to, 0, sizeof(to));rn to.ReadIntervalTimeout = 100;rn SetCommTimeouts(hCom, &to);rnrn //rn DWORD dwCount;rn char szBuf[] = "AT\r";rn bResult = WriteFile(rn hCom, szBuf, sizeof(szBuf), &dwCount, NULL);rn rn Sleep(200);rn bResult = ReadFile(rn hCom, szBuf, 1024, &dwCount, NULL);rnrn for (int i=0; i
UART通信,接收与发送(详细版,附代码)
UART通信—字节的<em>发送</em>与接受 串行接口是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流<em>发送</em>出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件。 在FPGA入门阶段,UART通讯协议是必学的知识,因为很多模块都是使用UART协议进行传输的,详细的这里我就不再多做介绍了,先贴上我的代码模板再慢慢做解释。 在<em>串口通信</em>中波特率表示每秒能传输的数据位,9600就是每秒能传输...
关于串口数据的发送和接收(调试必备)
前言 对于串口的数据<em>发送</em>和接收,大多是都是利用串口中断来进行的,但是这样对于编程方面有一定要求,并且程序也不太好写,比如说,如果让你随意接收一段数据,然后利用串口将它<em>发送</em>出来,第一个需要考虑的问题就是<em>接收数据</em>的长度,怎么才知道一段数据是否结束?或者说如果串口助手上面没有可以在数据末尾加上结束标志的时候,你<em>如何</em>知道数据的结束?,这必然牵涉到一定的编程技巧。但是,之前在接触C语言的时候,我们就利用过...
usart--串口通讯 接收并发送
【注:学习STM32总结做的笔记,大神勿喷。有不足之处还望不吝赐教,谢谢。】 usart–串口通讯 接收并<em>发送</em> main.c #include "delay.h" #include "sys.h" #include "usart.h" /************************************************ 串口实验 -<em>发送</em>‘0’(加回车),并回复 *********...
51单片机串口通信(字符串接收和发送
#include&amp;lt;reg52.h&amp;gt; //------------------<em>串口通信</em>协议-----------------// /* 客户端数据包格式解释(长度恒为15): 例如:A01_fmq_01Off___# A--------数据包的开始标记(可以为A到Z,意味着数据包可以有26种) 01-----设备代号 fmq_01Off___-...
串口通信程序中十六进制格式发送和接收实现
刚刚用MFC编写了一个采集和设定中央空调控制板上参数的应用程序,控制板和PC机之间通过485转串口和串口转USB电路实现通信。程序设计中碰到一个问题是PC端对<em>发送</em>和<em>接收数据</em>格式的处理,控制板可以读懂的协议是一组16进制数,如“66 03 0C 00 01 00 01 00 00 00 00 00 3C 00 3E F5 94”,PC端应用程序可以解析的也是由控制板<em>发送</em>的一组16进制数,而<em>串口通信</em>是
socket究竟如何发送接收数据
A----服务器端 B----客户端rnB先向A发数据,然后A给B返回相应的数据,B<em>接收数据</em>。rn问题:rnA给B返回数据时,A端接收,如果15秒后还收不到就不接收,以后B给A发数据时,A接收的始终是上一条数据 :(
串口通信多线程接收数据发送数据
<em>串口通信</em>,多线程<em>接收数据</em>,并可以<em>发送</em>数据
MFC串口通信接收数据停止
MFC<em>串口通信</em>接受数据是刚开始时正常的但是过了一小会数据就接受不到了,停留在上一个数据的显示。求单身解决下。。。
关于串口通信接收数据问题
void CSCommtestDlg::OnComm() rnrn // TODO: Add your control notification handler code herern VARIANT variant_inp;rn COleSafeArray safearray_inp;rn LONG len,k;rn BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integer that is not signed.rn CString strtemp;rn if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符rn rn static int count=0;rn count++;rn variant_inp=m_ctrlComm.GetInput(); //读缓冲区rn safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量rn len=safearray_inp.GetOneDimSize(); //得到有效数据长度rn for(k=0;k
win32 串口通信接收数据异常
在使用win32进行<em>串口通信</em>编程时,<em>发送</em>数据可以成功,但是<em>接收数据</em>发现数据错乱。rn<em>发送</em>方<em>发送</em>的数据为:(16进制)11 11 11 11 22 22 22 22 33 33 33 44 rn接收方收到的数据为:[img=https://img-bbs.csdn.net/upload/201804/27/1524818049_300825.png][/img]rnrn<em>发送</em>是通过串口调试助手做的:[img=https://img-bbs.csdn.net/upload/201804/27/1524818089_96450.png][/img]rnrn接收方代码如下:rnrntypedef struct NormalCommandrnrn unsigned char szDataBuffer[MAX_LEN];rn int dataLen;rnrn NormalCommand()rn rn memset(szDataBuffer, 0, MAX_LEN);rn dataLen = 0;rn rnrnstruNormalCommad;rnrnint ReadNormalAnswer(HANDLE Handle, struNormalCommad* commandTmp)rnrn if (Handle == INVALID_HANDLE_VALUE)rn rn return FALSE;rn rnrn DWORD realRecvLen = 0;rn DWORD curLen = 0;rn BOOL ret = FALSE;rnrn DWORD Error;rn COMSTAT cs = 0 ;rnrn while (1)rn rn ClearCommError(Handle, &Error, &cs);rnrn //MAX_HEAD_LEN 13 内部约定的数据包头长度。rn ret = ReadFile(Handle, commandTmp->szDataBuffer + curLen, MAX_HEAD_LEN, &realRecvLen, NULL);rn if (ret != FALSE)rn rn if (realRecvLen == 0)rn rn PurgeComm(Handle, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);rn return FALSE;rn rn curLen += realRecvLen;rn commandTmp->dataLen += realRecvLen;rnrn int leftLen = AnalyzeDataLen(commandTmp);rn if (leftLen > 0)rn rn ClearCommError(Handle, &Error, &cs);rnrn ret = ReadFile(Handle, commandTmp->szDataBuffer + curLen, leftLen, &realRecvLen, NULL);rn if (ret != FALSE)rn rn if (realRecvLen == 0)rn rn PurgeComm(Handle, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);rn return FALSE;rn rn curLen += realRecvLen;rn commandTmp->dataLen += realRecvLen;rn return TRUE;rn rn rn elsern rn return TRUE;rn rn rn rnrn return TRUE;rn
串口通信 接收数据问题
从网上下了一段<em>串口通信</em>的代码rn数据接收段如下:rnDWORD RS232::input( LPVOID pdest, DWORD len, DWORD dwMaxWait ) rn BOOL bSuccess; rn DWORD result = 0, rn read = 0, // num read bytes rn mask = 0; // a 32-bit variable that receives a mask rn // indicating the type of event that occurred rn if ( len < 1 ) rn return(0); rn // create event for overlapped I/O rn m_ov.hEvent = CreateEvent( NULL, // pointer to security attributes rn FALSE, // flag for manual-reset event rn FALSE, // flag for initial state rn "" ); // pointer to event-object name rn if ( m_ov.hEvent == INVALID_HANDLE_VALUE ) rn RS232::ErrorToString( "RS232::input() CreateEvent() failed" ); rn return -1; rn rn // Specify here the event to be enabled rn bSuccess = SetCommMask( m_hCom, EV_RXCHAR ); rn if ( ! bSuccess ) rn CloseHandle(m_ov.hEvent); rn RS232::ErrorToString("RS232::input() SetCommMask() failed"); rn return -1; rn rn // WaitForSingleObject rn bSuccess = WaitCommEvent(m_hCom, &mask, &m_ov); rn if ( !bSuccess ) rn int err = GetLastError(); rn if ( err == ERROR_IO_PENDING ) rn result = WaitForSingleObject(m_ov.hEvent,INFINITE); //wait dwMaxWait rn // milli seconds before returning rn if ( result == WAIT_FAILED ) rn CloseHandle(m_ov.hEvent); rn RS232::ErrorToString( "RS232::input() WaitForSingleObject() failed" ); rn return -1; rn rn rn rn // The specified event occured? rn if ( mask & EV_RXCHAR ) rn rn bSuccess = ReadFile( m_hCom, // handle of file to read rn pdest, // address of buffer that receives data rn len, // number of bytes to read rn &read, // address of number of bytes read rn &m_ov); // address of structure for data rn if ( RS232::IsNT() ) rn bSuccess = GetOverlappedResult(m_hCom, &m_ov, &read, TRUE); rn if ( !bSuccess ) rn CloseHandle( m_ov.hEvent ); rn RS232::ErrorToString( "RS232::input() GetOverlappedResult() failed" ); rn return -1; rn rn rn else if ( !bSuccess ) rn CloseHandle(m_ov.hEvent); rn RS232::ErrorToString( "RS232::input() ReadFile() failed" ); rn return -1; rn rn rn else rn CloseHandle(m_ov.hEvent); rn wsprintf( m_lpszErrorMessage, "RS232::input() No EV_RXCHAR occured\n" ); rn return -1; rn rn CloseHandle(m_ov.hEvent); rn return read; rn rn运行时,运行到 bSuccess = WaitCommEvent(m_hCom, &mask, &m_ov);就一直等待了,另外本人设置的等待时间是无限
串口通信接收数据显示
各位大侠:rn我要接收6个光栅的数值并显示,但是每一个要显示的数值,对应的通信协议的帧头和帧尾都不一样rn具体的是:我的第一个数,是在01和02之间;第二个数是在02和03之间……rn每个帧头和帧尾都不一样,下位机是按顺序一个一个发的,rn我是要把6个数值分别放在6个Edit区显示,还是放在一个Edit区显示?哪一种做法更方便呢?要怎么实现呢?rn而且接到的数据要保存,如果是6个Edit区的话,是不是每个都要附加上保存文件的控件?rn是用If语句判断,嵌套还是怎么办呢?rn求各位高手指点!!十分感谢
串口通信接收数据问题
VARIANT variant_inp; rn COleSafeArray safearray_inp; rn LONG len,k; rn BYTE *rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed. rn CString strtemp;rn rnrn //char *ruler_str; rn double ruler_val;rn CString strlur;rn CString str;rn rn if(m_COMM.GetCommEvent()==2)//事件值为2表示接收缓冲区内有字符 rn ////////以下你可以根据自己的通信协议加入处理代码 rn variant_inp=m_COMM.GetInput(); //读缓冲区 rn safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量 rn len=safearray_inp.GetOneDimSize(); //得到有效数据长度 rn for(k=0;k
串口通信界面接收数据没反应
我做的<em>串口通信</em>界面是按照龚建伟老师的教程做的,<em>发送</em>数据没问题,但是接收不到数据。rn代码如下:rn// SCommTestDlg.cpp : implementation filern//rnrn#include "stdafx.h"rn#include "SCommTest.h"rn#include "SCommTestDlg.h"rnrn#ifdef _DEBUGrn#define new DEBUG_NEWrn#undef THIS_FILErnstatic char THIS_FILE[] = __FILE__;rn#endifrnrn/////////////////////////////////////////////////////////////////////////////rn// CAboutDlg dialog used for App Aboutrnrnclass CAboutDlg : public CDialogrnrnpublic:rn CAboutDlg();rnrn// Dialog Datarn //AFX_DATA(CAboutDlg)rn enum IDD = IDD_ABOUTBOX ;rn //AFX_DATArnrn // ClassWizard generated virtual function overridesrn //AFX_VIRTUAL(CAboutDlg)rn protected:rn virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV supportrn //AFX_VIRTUALrnrn// Implementationrnprotected:rn //AFX_MSG(CAboutDlg)rn //AFX_MSGrn DECLARE_MESSAGE_MAP()rn;rnrnCAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)rnrn //AFX_DATA_INIT(CAboutDlg)rn //AFX_DATA_INITrnrnrnvoid CAboutDlg::DoDataExchange(CDataExchange* pDX)rnrn CDialog::DoDataExchange(pDX);rn //AFX_DATA_MAP(CAboutDlg)rn //AFX_DATA_MAPrnrnrnBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)rn //AFX_MSG_MAP(CAboutDlg)rn // No message handlersrn //AFX_MSG_MAPrnEND_MESSAGE_MAP()rnrn/////////////////////////////////////////////////////////////////////////////rn// CSCommTestDlg dialogrnrnCSCommTestDlg::CSCommTestDlg(CWnd* pParent /*=NULL*/)rn : CDialog(CSCommTestDlg::IDD, pParent)rnrn //AFX_DATA_INIT(CSCommTestDlg)rn m_strEditRXData = _T("");rn m_strEditTXData = _T("");rn //AFX_DATA_INITrn // Note that LoadIcon does not require a subsequent DestroyIcon in Win32rn m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);rnrnrnvoid CSCommTestDlg::DoDataExchange(CDataExchange* pDX)rnrn CDialog::DoDataExchange(pDX);rn //AFX_DATA_MAP(CSCommTestDlg)rn DDX_Control(pDX, IDC_MSCOMM1, m_ctrlComm);rn DDX_Text(pDX, IDC_EDIT_RXDATA, m_strEditRXData);rn DDX_Text(pDX, IDC_EDIT_TXDATA, m_strEditTXData);rn //AFX_DATA_MAPrnrnrnBEGIN_MESSAGE_MAP(CSCommTestDlg, CDialog)rn //AFX_MSG_MAP(CSCommTestDlg)rn ON_WM_SYSCOMMAND()rn ON_WM_PAINT()rn ON_WM_QUERYDRAGICON()rn ON_BN_CLICKED(IDC_BUTTON_MANUALSEND, OnButtonManualsend)rn //AFX_MSG_MAPrnEND_MESSAGE_MAP()rnrn/////////////////////////////////////////////////////////////////////////////rn// CSCommTestDlg message handlersrnrnBOOL CSCommTestDlg::OnInitDialog()rnrn CDialog::OnInitDialog();rn if(m_ctrlComm.GetPortOpen()) rn m_ctrlComm.SetPortOpen(FALSE);rn m_ctrlComm.SetCommPort(1);//选择com1rn m_ctrlComm.SetInputMode(1);//输入方式为二进制rn m_ctrlComm.SetInBufferSize(1024);rn m_ctrlComm.SetOutBufferSize(512);rn m_ctrlComm.SetSettings("9600,n,8,1");rn if(!m_ctrlComm.GetPortOpen())rn m_ctrlComm.SetPortOpen(TRUE);rn m_ctrlComm.SetRThreshold(1);rn m_ctrlComm.SetInputLen(0);rn m_ctrlComm.GetInput();rn return TRUE;rn // Add "About..." menu item to system menu.rnrn // IDM_ABOUTBOX must be in the system command range.rn ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);rn ASSERT(IDM_ABOUTBOX < 0xF000);rnrn CMenu* pSysMenu = GetSystemMenu(FALSE);rn if (pSysMenu != NULL)rn rn CString strAboutMenu;rn strAboutMenu.LoadString(IDS_ABOUTBOX);rn if (!strAboutMenu.IsEmpty())rn rn pSysMenu->AppendMenu(MF_SEPARATOR);rn pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);rn rn rnrn // Set the icon for this dialog. The framework does this automaticallyrn // when the application's main window is not a dialogrn SetIcon(m_hIcon, TRUE); // Set big iconrn SetIcon(m_hIcon, FALSE); // Set small iconrn rn // TODO: Add extra initialization herern rn return TRUE; // return TRUE unless you set the focus to a controlrnrnrnvoid CSCommTestDlg::OnSysCommand(UINT nID, LPARAM lParam)rnrn if ((nID & 0xFFF0) == IDM_ABOUTBOX)rn rn CAboutDlg dlgAbout;rn dlgAbout.DoModal();rn rn elsern rn CDialog::OnSysCommand(nID, lParam);rn rnrnrn// If you add a minimize button to your dialog, you will need the code belowrn// to draw the icon. For MFC applications using the document/view model,rn// this is automatically done for you by the framework.rnrnvoid CSCommTestDlg::OnPaint() rnrn if (IsIconic())rn rn CPaintDC dc(this); // device context for paintingrnrn SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);rnrn // Center icon in client rectanglern int cxIcon = GetSystemMetrics(SM_CXICON);rn int cyIcon = GetSystemMetrics(SM_CYICON);rn CRect rect;rn GetClientRect(&rect);rn int x = (rect.Width() - cxIcon + 1) / 2;rn int y = (rect.Height() - cyIcon + 1) / 2;rnrn // Draw the iconrn dc.DrawIcon(x, y, m_hIcon);rn rn elsern rn CDialog::OnPaint();rn rnrnrn// The system calls this to obtain the cursor to display while the user dragsrn// the minimized window.rnHCURSOR CSCommTestDlg::OnQueryDragIcon()rnrn return (HCURSOR) m_hIcon;rnrnrnBEGIN_EVENTSINK_MAP(CSCommTestDlg, CDialog)rn //AFX_EVENTSINK_MAP(CSCommTestDlg)rn ON_EVENT(CSCommTestDlg, IDC_MSCOMM1, 1 /* OnComm */, OnComm, VTS_NONE)rn //AFX_EVENTSINK_MAPrnEND_EVENTSINK_MAP()rnrn void CSCommTestDlg::OnComm() rnrn // TODO: Add your control notification handler code herern VARIANT variant_inp;rn COleSafeArray safearray_inp;rn LONG len,k;rn BYTE rxdata[2048];rn CString strtemp; rn //UpdateData(TRUE);rn if(m_ctrlComm.GetCommEvent()==2)rn variant_inp=m_ctrlComm.GetInput();rn safearray_inp=variant_inp;rn len=safearray_inp.GetOneDimSize();rn for(k=0;k
android串口通信 接收数据问题
PC端的串口工具直接对"/dev/ttyS2 测试过,能读到数据。rnrn本人在这里http://code.google.com/p/android-serialport-api/下载个可读写串口的sample 源码。rn编译生成 ***.apk文件, 安装完成后,第一个button “SetUp” 配置完串口(ttyS2,57600)。rn点第二个button “Console”,在界面里面<em>发送</em>框 <em>发送</em>数据,PC串口工具能收到;但是反之,PC串口工具<em>发送</em>数据,终端程序界面接收不到数据,这是怎么回事呢?rn求高手指点。比较急,谢谢!
串口通信 接收数据 处理
手里拿到一个倾角仪,写了串口驱动接收坐标数据,格式如下:rnX-00.12 Y+00.03rnX-00.32 Y+00.03rnX+00.12 Y+00.03rnX-00.12 Y-00.03rnX-00.72 Y+20.03rnX-10.12 Y+20.43rn...rn我能接受到数据 但是每次接受的数据长度不一样(起始点也不是正常的一组坐标),rn我可以正常打印出来,但是不知道应该怎么处理成一组坐标,接收到的是rncheckdata(char* _data, int _datalen);rn请问我下面应该<em>如何</em>处理成需要的坐标集。我最终是要提取出连续的x,y值rn
vc串口通信如何按照协议读取接收数据
我用的serial port类写的<em>串口通信</em>,如果不解读其中的信息的话接收都没问题,但是想按照协议内容解读信息就出现问题,求大神指点啊!!!rnrnLONG CTEST1Dlg::OnCommunication(WPARAM ch, LPARAM port)rn//LONG CTEST1Dlg::OnComm(WPARAM ch, LPARAM port)rnrnrn if(m_ctrlEditRXData.GetLineCount()>=15)rn rn m_strEditRXData.Empty();rn UpdateData(FALSE);rn rn UpdateData(TRUE);rn CString str;rn CString strStatus;rn int len;rn int flag;rn BYTE data[100];rn m_strPortRXData += (char)ch;rn str.Format("%02x",ch);rn len=str.GetLength();rn CString data1,data2,str11,;rn long datastr[2];rn char str1[100];rn BYTE db1,db2;rn datastr[1]=atoi(str.Mid(1,2));rn itoa(datastr[1],str1,16);rn db1=(BYTE)(Hex2ten(str[1])); //转十进制rn db2=(BYTE)(Hex2ten(str[2]));rn data1=dtob(db1); //转二进制rn data2=dtob(db2);rn if(data1[0]=='1')rn state(IDC_STATIC0,0x0000FF00);rn elsern state(IDC_STATIC0,0xAAAAAAAA);rnrn if(data1[1]=='1')rn state(IDC_STATIC1,0x0000FF00);rn elsern state(IDC_STATIC1,0xAAAAAAAA);rnrn if(data1[2]=='1')rn state(IDC_STATIC2,0x0000FF00);rn elsern state(IDC_STATIC2,0xAAAAAAAA);rnrn if(data1[3]=='1')rn state(IDC_STATIC3,0x0000FF00);rn elsern state(IDC_STATIC3,0xAAAAAAAA);rnrn if(data2[0]=='1')rn state(IDC_STATIC4,0x0000FF00);rn elsern state(IDC_STATIC4,0xAAAAAAAA);rnrn if(data2[1]=='1')rn state(IDC_STATIC5,0x0000FF00);rn elsern state(IDC_STATIC5,0xAAAAAAAA);rnrn if(data2[2]=='1')rn state(IDC_STATIC6,0x0000FF00);rn elsern state(IDC_STATIC6,0xAAAAAAAA);rnrn if(data2[3]=='1')rn state(IDC_STATIC7,0x0000FF00);rn elsern state(IDC_STATIC7,0xAAAAAAAA);rnrn m_strEditRXData += str;rn UpdateData(FALSE);rn return 0;
串口通信如何发送控制字符()
是否m_comm.setoutput(colevariant("0x0D"));
串口通信如何多命令发送
如题:rn与串口设备通信,假设总共有20条命令,<em>如何</em>实现<em>发送</em>完一条后如果接受数据OK,则<em>发送</em>第二条以此类推,直到<em>发送</em>完所有数据。
串口发送接收数据(c#.net)
通过串口<em>发送</em><em>接收数据</em>
spcomm发送接收数据问题
Delphi(Pascal) codernprocedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;rn BufferLength: Word);rn varrn RecData: string;rnbeginrn SetLength(RecData, BufferLength);rn move(Buffer^, PChar(@RecData[1])^, BufferLength);rn memo2.Lines.Add('已接收'+ inttostr(BufferLength)+'字节数据');rn memo2.Lines.Add(RecData);//添加接收到的内容rn memo2.Invalidate;rnend;rnrnprocedure TForm1.FormCreate(Sender: TObject);rnbeginrn Comm1.StartComm;rnend;rnrnprocedure TForm1.SpeedButton1Click(Sender: TObject);rnbeginrn Comm1.WriteCommData(Pchar(Memo1.Text),Length(Memo1.Text));rn if Comm1.WriteCommData(Pchar(Memo1.Text), 3) thenrn memo1.Lines.Add(Pchar(Memo1.Text))rn elsern memo1.Lines.Add('数据<em>发送</em>错误!')rnend;rnrnrn为什么接收不了数据,由于没有物理硬件,我用的是SUDT SerialNull,打开了10个虚拟端口 ,自发自收rnCOMMNAME 是COM3rnrn单步调试跟本就没能进入ReceiveData中,进入了TComm.CommWndProc,是哪出了问题
进程pipe发送接收数据
本视频致力于打造最适合Python初学者的入门视频,站在初学者角度,从零开始、由浅入深,以朴实生动的语言来阐述复杂的问题,其中列举了大量现实中的例子进行讲解,真正做到通俗易懂。 本视频涵盖Python基础语言、流程控制、数据结构、函数、模块与包、面向对象、文件、异常等核心知识点。当学完一个章节的知识点,通过每章实用性强的案例,将所学知识综合运用到实际开发中,积累项目开发经验。
Java Socket 发送/接收数据
在上一篇了解过 Java Socket 的两种形式(TCP、UDP)后,本文将继续介绍<em>如何</em>利用 Java Socket <em>发送</em>和<em>接收数据</em>及其内部原理的实现。 Java Socket 的目的在于实现与其他程序的信息交互,包括<em>发送</em>和接收信息两种主要操作。进行信息交互的前提在于相互之间具有共同的协议,协议规定了程序之间交互信息的规范和标准。比如 IPv4 和 IPv6 就是定义了<em>如何</em>传输数据的标准,头部的...
stm32 uart1 发送接收数据
stm32 实现串口通讯 uart1 电脑串口<em>发送</em>、<em>接收数据</em>,已测试通过。
向ESB发送接收数据
private static String tcpSendDataToEsb(String host, int port, int timeout,String content) throws Exception { Socket socket = null; try { socket = new Socket(); InetSocketAddress addr
TCP发送接收数据(一)
TCP<em>发送</em><em>接收数据</em>
串口调试,发送接收数据问题
我做一个串口调试助手,想练习串口数据的<em>发送</em>,用的是VS自带的serialport控件,<em>发送</em>数据和<em>接收数据</em>程序如下,<em>接收数据</em>时候,乱码:如图[img=https://img-bbs.csdn.net/upload/201309/10/1378788544_528800.png][/img]rn测试程序如下,主要指点串口的接收部分rn private void button3_Click(object sender, EventArgs e) //<em>发送</em>数据rn rn tryrn rn if ( txtSendMessage.Text=="")rn rn MessageBox.Show("<em>发送</em>信息为空", "消息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);rn return;rn rn elsern rn if (spSend.IsOpen == true)rn rn byte[] data = Encoding.Unicode.GetBytes(txtSendMessage.Text);rn string str = Convert.ToBase64String(data);rn spSend.Write(str);rn rn elsern rn MessageBox.Show("串口没有打开", "消息提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);rn return;rn rn rn rn rn catch (Exception ex)rn rn MessageBox.Show(ex.Message);rn return;rn rn rn private void spReceive_DataReceived(object sender, SerialDataReceivedEventArgs e)rn rn if (spReceive.IsOpen == false) //如果串口关闭的,那么返回rn return;rn tryrn rn IsRecieve = true;rn int n = spReceive.BytesToRead; //获得接收缓冲区的字节数rn if (n < 1)rn rn IsRecieve = false;rn return;rn rn byte[] buf = new byte[n];//声明一个临时数组用来存放当前来的串口数据,长度由读取到的字节决定rn spReceive.Read(buf, 0, n);//读取缓冲区数据rn rn rhbReceive.Invoke(new EventHandler(delegatern rn rhbReceive.Text = Encoding.UTF8.GetString(buf);rn ));rn rn catch (Exception ex)rn rn MessageBox.Show(ex.ToString());rn return;rn rn finallyrn rn Listening = false;rn rn rn
C#简单发送接收数据
一个简单的c#数据<em>发送</em>,接收实例,适合初学者。
USB 发送接收数据
winform中实现usb数据的<em>发送</em>和接收
winsock发送接收数据的问题
就是我用winsock<em>发送</em>图片时,报错说:"数据文报太大,不能装入缓冲区rn并被截断" 我是用字节数组传的,源代码如下:(UDP协议)rnPrivate Sub Form_Load()rn With udpPeerArn .RemoteHost = "202.38.204.36" '要连接到的计算机名"rn .RemotePort = 80 '要连接到的端口号rn .LocalPort = 80 '该Winsock控制将要使用的本地端口号,便于其它端与该Winsock通讯rn .Bind 80 '将该Winsock控制绑定到该本地端口rn End Withrn End Subrn<em>发送</em>数据:rnPrivate Sub Command1_Click()rnDim filelength As Longrnfilelength = FileLen("F:\huangjinfeng\kx50模板.xls")rn ReDim bytt(filelength) As Bytern Dim l As Longrn l = FreeFilern Open "F:\huangjinfeng\kx50模板.xls" For Binary Access Read As #lrn Get #l, , byttrn Close #lrn udpPeerA.SendData byttrn ReDim bytt(0)rn End Subrn<em>接收数据</em>:rnPrivate Sub udpPeerA_DataArrival(ByVal bytesTotal As Long)rnDim lenx As Longrnlenx = FileLen("F:\huangjinfeng\kx50模板.xls")rnReDim bytx(lenx) As Bytern If bytesTotal >= lenx Thenrn udpPeerA.PeekData bytx, vbArray + vbByte, lenxrn Dim l As Longrn l = FreeFilern Open "d:\kx50模板.xls" For Binary Access Write As #lrn Put #1, , bytxrn Close #lrn 'MsgBox "收到文件 C:\Excl.xls"rn ReDim bytx(0)rn End Ifrn End Subrn请大家看看,或给个源代码(可以<em>发送</em>图片或exe,rpt等文件类型的).谢谢!
QT tcpsocket 发送/接收数据
<em>发送</em>数据与<em>接收数据</em>中文乱码处理由于有个项目需求是要求文件传输,也要求普通数据传输,而只用一个端口的情况下,<em>如何</em>分开对文件的处理与对数据的处理就非常重要,用官方提供的例子只有单传输文件或者单传输数据,并且传输数据对中文的支持也不是很好,所以针对项目需要,设计了一个方案,这里只列出了单<em>发送</em>数据模块的核心代码,很好地处理了中文传输的问题,后期整理后会慢慢补充其他模块的代码。 传输数据的结构: 待<em>发送</em>的数
发送的数据和接收数据颠倒
我用的是CAsynSocket类,重载了onreceive等虚函数rn<em>发送</em>端rn char data[100] = "sd";rn if(-1==m_connetsocket.Send(data, 100))rn MessageBox("error");rn char data2[100]="12345";rn if(-1==m_connetsocket.Send(data2, 100))rn MessageBox("error 2");rn接收端rn char data[100];rn memset(data,0,100);rn UINT dw=m_connectsocket.Receive(data, 100);rn MessageBox(data);rn但我先收到的是12345 第二个才是sdrn请问高手这是怎么回事,谢谢
发送十六进制接收数据的问题?
我发$02FF ,所接收到数据如下:rn (打开串口第一次接收到的数据)rn(第二次)rn(第三次)rn(第四次)rn(...)rn(...)rn(...)rn02FF02FF16(第N次,以十六进制显示的数据)rn02FF02FF16(N+1次,16进制显示的数据)rn//<em>发送</em>数据函数的代码rnprocedure TTest.SendClick(Sender: TObject);rnvarrn FSd:string;rnbeginrn cdata:=FSChar.Text;rn hdata:=FSHex.Text;rn if HexSend.Checked then //以16进制<em>发送</em>rn beginrn FSd:=hdata+cdata;rn SendHex(FSd);rn end elsern beginrn SendHex(hdata);rn comm1.WriteCommData(PCHar(cdata),length(cdata));rn end;rnend;rn//<em>接收数据</em>rnprocedure TTest.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;rn BufferLength: Word);rn varrn Data,s:string;rn C:Char;rn JSd:array of char;rn i:integer;rnbeginrn s:='';rn if HexGet.Checked then //接收区以16进制显示rn beginrn setlength(JSd,BufferLength);rn move(Buffer^,PChar(JSd)^,BufferLength);rn for i:=0 to BufferLength dorn beginrn C :=JSd[i];rn s:=s+inttohex(byte(C),2);rn end;rn JSData.Lines.Add(s);rn end elsern beginrn setlength(Data,BufferLength);rn move(Buffer^,PChar(Data)^,BufferLength);rn JSData.Lines.Add(Data);rn end;rn end;rn//<em>发送</em>16进制数据rnprocedure TTest.SendHex(s: String);rnvarrn s2:string;rn buf:array[0..50000] of byte;rn i:integer;rnbeginrn s2:='';rn for i:=1 to length(s) dorn beginrn if ((copy(s,i,1)>='0') and (copy(s,i,1)='a') and (copy(s,i,1)='A') and (copy(s,i,1)+copy(s2,i*2+1,2));rn comm1.WriteCommData(@buf,(length(s2) div 2));rn end;rnend;rn帮我看看啊,如果第一次是正确的,那影响我的第二次另外发的一个数据啊,我要做握手通信啊!
python tcp发送接收数据
对于tcp server,一般流程为创建套接字,绑定,监听,accep链接(发生三次握手,阻塞),recv(阻塞),send 对于tcp client,一般流程为创建套接字,连接,<em>发送</em>,接收(阻塞) 需要注意的是<em>发送</em>和接收的都必须是bytes类型的数据,str转bytes使用encode,bytes转str使用decode 服务端例子: from socket import * from...
C# USB 发送接收数据
C#语言编写的USB通信程序,可以接收和<em>发送</em>数据,实例代码3个。
环形队列串口发送接收数据
环形队列中断方式 -- 不耗时,支持缓冲区 unsigned char SendItComm=1; void SendCommBuffer(unsigned char *base, unsigned short size) {     unsigned short i=0;     if (!size)     {         return;     }   
UDP协议发送接收数据
做了一个udp通讯例子,可<em>发送</em>数据和<em>接收数据</em>
Qt5串口通信接收数据显示乱码
各位,我在Qt5中,注意,是在Qt5的环境下。<em>串口通信</em>时<em>接收数据</em>显示乱码rn如图[img=https://img-bbs.csdn.net/upload/201604/29/1461891137_86350.jpg][/img]rnrn打开串口<em>接收数据</em>后rn[img=https://img-bbs.csdn.net/upload/201604/29/1461891217_997488.png][/img]rnrn[img=https://img-bbs.csdn.net/upload/201604/29/1461891635_211060.png][/img]rnrn这是显示的乱码,是否跟接收到串口数据的编码方式有关?rnrn是否应该在此处加上数据的编码控制,使得后面的数据能正确的显示在接收窗口?rn
基本解决android串口通信 接收数据问题
本人将 android-serialport-api 交叉编译成 apk后,安装到android 终端设备上,和PC接上串口,打开PC的串口终端,可以看到android机器的一些log信息,说明串口是通的。我的android机器的串口为ttyS2,57600 。rn进入该android-serialport-api.apk程序后,先选第一个“SetUp”,配置好串口。rn然后选第二个“Console”,这是PC串口终端会接收到以下log:rnserial ->Mode disabled.rnrn下面困惑就来了,都要先在PC串口端 输入 ls 命令,然后才能给 android设备发数据,android终端设备才能收到数据。rn这是为什么呢?是不是系统底层哪边配置有问题?rn请对linux底层熟悉的人指导,谢谢!
VB串口通信RS232 接收数据问题.
我第一次学习接触<em>串口通信</em>编程,想利用电脑接收"电子高度规"传递的数据.rn窗体上有一个文本框控件,把收到的数据写显示在文本框里rnrn我是这样写的代码:rnrnDim z As StringrnrnPrivate Sub Form_Load()rn MSComm1.commport = 2rn MSComm1.settings = "9600,N,8,1"rn MSComm1.portopen = Truern MSComm1.RThreshold = 1rnEnd SubrnrnPrivate Sub MSComm1_OnComm()rn z = MSComm1.inputrn Text2.Text = zrn rnEnd Subrnrn可是它跟本就没有发生MSComm1_OnComm()事件呀.rnrn请高手多多指教.十分感谢....
VB2008串口发送接收数据
VB2008串口<em>发送</em>和<em>接收数据</em>,具体的代码,简单的实例
串口发送接收数据乱码
我的单片机串口<em>发送</em>和<em>接收数据</em>的时候老是乱码,波特率的设置我已经试过各种了,还是一样,请问这个问题<em>如何</em>解决呢?
多线程socket发送接收数据
客户端同服务端只建立一个socket连接 tcp的。客户端这边是多线程的,都要通过这个socket连接<em>发送</em>并<em>接收数据</em>。<em>发送</em>数据可以依次发,问题是当服务器有响应返回数据,<em>如何</em>找到是对哪个线程的返回数据呢。在每个线程中使用异步函数<em>发送</em>能行吗或者必须加一个分发的程序。
UDP发送接收数据的问题?
我要实现的功能这样,客户端<em>发送</em>数据,然后服务端<em>接收数据</em>,现在数据能正常接收,但是存在以下问题:rnrn1、如果我想在服务端<em>接收数据</em>后,给客户端(WSARecvFrom中解析的端口和IP)发回一个确认标志,我用服务端的绑定接收的SOCKET,触发了服务端的<em>接收数据</em>消息,这是什么回事?是不是需要重新在服务端建立一个SOCKET?rnrn2、WSARecvFrom解析出来的端口,并不是我客户端<em>发送</em>数据的端口,为什么?
socket发送接收数据问题
服务器程序:rnvoid main()rnrn SOCKET socket1;rn char *msg1="";rn InitWinsock();//主要实现WSAStartup()初始化的函数rn struct sockaddr_in local;rn local.sin_family=AF_INET;rn local.sin_port=htons(3490); ///监听端口rn local.sin_addr.s_addr=INADDR_ANY; ///本机rn memset(local.sin_zero,0,8);rn socket1=socket(AF_INET,SOCK_STREAM,0);rn int bind_result = bind(socket1,(struct sockaddr*)&local,sizeof(local)); rn int nlisten = listen(socket1, 10);rn printf("Listening......\n");rn struct sockaddr_in their_addr;rn int nSize = sizeof(their_addr);rn int nNewFd = accept(socket1, (struct sockaddr*)&their_addr, &nSize);rn printf("Accepted! IP:%s: Port:%d\n", inet_ntoa(their_addr.sin_addr), ntohs(their_addr.sin_port));rn rn recv(socket1,msg1,1024,0);//接收客户端发来的消息rn printf("%s",msg1);rn closesocket(socket1);rnrnrn客户端程序:rnvoid main()rnrn SOCKET socket1;rn char *msg="hello";rn int len,bytes_sentlen;rn len=strlen(msg);rn InitWinsock();rn struct sockaddr_in from;rn struct sockaddr_in local;rn local.sin_family = AF_INET;rn local.sin_port = htons(888);rn local.sin_addr.s_addr = INADDR_ANY;rn int fromlen =sizeof (from);rn socket1 = socket(AF_INET,SOCK_STREAM,0);rn int nbind = bind(socket1,(struct sockaddr*)&local, sizeof(local));rn if (nbind < 0)rn rn printf("error bind");rn rn from.sin_family = AF_INET;rn from.sin_port = htons(3490);rn from.sin_addr.s_addr=inet_addr("192.168.0.180");rn memset(from.sin_zero, 0, 8);rn int nCon = connect(socket1, (struct sockaddr*)& from, sizeof (from));rn if (nCon < 0)rn rn printf("error bind");rn rn bytes_sentlen=send(socket1,msg,len,0);//<em>发送</em>rn closesocket(socket1);rnrn运行后,在服务器那边不会显示hello,就是服务器的rnrecv(socket1,msg1,1024,0);//接收客户端发来的消息rn没收到消息,怎么解决啊???
使用MPI发送接收数据
主要用于集群系统中结点之间的非阻塞接收和<em>发送</em>数据
java-TCP协议发送接收数据
java-TCP协议<em>发送</em>和<em>接收数据</em> TCP协议<em>接收数据</em>的步骤: A:创建<em>接收数据</em>的Socket对象   创建对象的时候要指定端口 B:监听客户端连接     等待客户端连接 C:获取Socket对象的输入流(字节流) D:读数据,并显示在控制台 E:释放资源 服务器: public class FileServerDemo {...
Python:UDP的发送接收数据
#导入socket包 from socket import * def main(): udp_socket = socket(AF_INET, SOCK_DGRAM) # local_addr = ('192.168,31,64',6666) #字符‘ ’即是表示使用本地ip,也可以指定某个IP,6665是port端口,1024-65535可用 local_addr = ('',6...
android:intent 发送接收数据
  //<em>发送</em> Intent intent = new Intent(); intent.setClass(Send.this, Recieve.class); // if have something to send, use Bundle Bundle bundle = new Bundle(); bundle.putString(&quot;KEY_AGE&quot;, text...
打开串口发送接收数据
private SerialPort LEDPt = new SerialPort(); if (!LEDPt.IsOpen) { LEDPt.PortName = SysConfig.comNum; //设置端口号 LEDPt.BaudRate = int.Parse(SysConfig.btl); //设置波特率 LEDPt.Open(); //打开串...
串口发送接收数据
<em>发送</em>数据:rnSystem.Text.Encoding.GetEncoding("Unicode").GetBytes(textBox1.Text);rn这样是不是不管是字符、数字还是汉字都算是2个字符?rn这样不是不对啊?数字和汉字应该占一个字符的吧,如果我<em>发送</em>的一串数据有汉字、数字、字母,<em>如何</em>计算实际到底是多少的字符呢,
求助STM32F407VG串口通信接收数据有误
rn使用原厂的STM32F407VG Discovery开发板,进行<em>串口通信</em>的调试。发现<em>接收数据</em>有错误rn比如接收到0x55的时候没有问题,接收到0x74的时候却变成了0x11,接收0x33,变成了0x66。。。rn原厂开发板,晶振8M,系统时钟配置也是8M,没有更改例程的内容。配置代码如下,请各位大虾帮忙,不胜感激。rnrn[code=c]int main(void)rnrn NVIC_InitTypeDef NVIC_InitStructure;rnrn /* Configure the system clocks */rn RCC_ClocksTypeDef RCC_Clocks;rnrn /* SysTick end of count event each 10ms */rn RCC_GetClocksFreq(&RCC_Clocks);rn SysTick_Config(RCC_Clocks.HCLK_Frequency / 100);rn rn /********************* NVIC Configuration **********************/rn /* Enable the USARTx Interrupt */rn NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;rn NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;rn NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;rn NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;rn NVIC_Init(&NVIC_InitStructure); NVIC_Config();rn rn /*GPIO Config*/rn GPIO_InitTypeDef GPIO_InitStructure;rnrn /* Enable GPIO clock */rn RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOA, ENABLE);rnrnrn /* Enable UART clock */rn RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);rn rnrn /************************GPIO Config************************/rn GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);rnrn /* Connect PXx to USARTx_Rx*/rn GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);rn rn GPIO_StructInit(&GPIO_InitStructure); rnrn /* Configure USART Tx as alternate function */rn GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;rn GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;rnrn GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;rn GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;rn GPIO_Init(GPIOA, &GPIO_InitStructure);rnrn /* Configure USART Rx as alternate function */rn GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;rn GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;rn GPIO_Init(GPIOA, &GPIO_InitStructure);rnrn rn /************************GPIO Config************************/rn USART_Configuration();rn USART_ITConfig(USART1, USART_IT_TXE, ENABLE);rn USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);rnrn while (1)rn rn Delay(0xfFFFFF);rn Delay(0xfFFFFF);rn USART_SendData(USART1, 3); rn rnrn/*ISR 函数*/rnvoid USARTx_IRQHANDLER(void)rnrn if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)rn rn /* Read one byte from the receive data register */rn RxData = USART_ReceiveData(USART1);rn RxData = 0x000000FF&RxData;rn USART_SendData(USART1, RxData+1);rn rnrn[/code]
Qt串口通信接收数据不完整的解决方法
    在使用串口<em>接收数据</em>时,当数据量大的时候会出现数据接收不完整的情况。因为串口数据获取函数readAll()由readyRead()信号触发,但readyRead()信号在串口读到起始标志时立即<em>发送</em>,并不保证一定是当前所发数据的起始部分。因此<em>串口通信</em>双方在通信前应制定好通信协议,规定好数据的起始和结束标志,串口当读到完整的起始和结束标志之后,才认定读完一条完整的数据。    本例中用串口定时发...
串口通信 只有第一次接收数据有误
做一个pc与plc通信的上位机程序,用的是CSerialPort类。rnrn#define MAXBUFFER 1024rnstruct RSDATArn BYTE Data[MAXBUFFER];rn int Length;rn RSDATA()Length=0;;rn;rnrnRSDATA m_szReceiveBuffer;//CSerialPort中用来保存接收到的数据rnrn::PostMessage((port->m_pOwner)->m_hWnd, WM_COMM_RXCHAR, (WPARAM) port->m_nPortNr, (LPARAM)&(port->m_szReceiveBuffer));rn回调函数中定义rs来接受m_szReceiveBuffer:rn RSDATA rs=*(RSDATA *)lParam;//再后面就是对接收到的数据进行处理了rn跟踪后发现 m_szReceiveBuffer和rs的Data[]部分内容相同,而Length值不等(仅是第一次接受时发生)rnrn现在的问题是,程序启动后第一次接受下位机<em>发送</em>的数据总会出错,但只是第一次有错,下位机再重发就正常了。请问有那些可能的原因?
C#串口通信接收数据部完整
自己做可<em>发送</em>接收的<em>串口通信</em>,发5代码个字节数据(FA FB FC FD FE),每次只能接2-3个数据(FA FB)。再按<em>发送</em>键就能接(FC FD FE),以此类推。求大神帮忙。<em>发送</em>接收代码如下:rn<em>发送</em>:rn tryrn rn string s = textBox1.Text;rn s = s.Replace(" ", "");rn byte[] buffer = new byte[s.Length / 2];rn for (int i = 0; i < s.Length; i += 2)rn rn buffer[i / 2] = (byte)Convert.ToByte(s.Substring(i, 2), 16);rn richTextBox1.Text += buffer[i / 2];rn rn serialPort1.Write(buffer, 0, buffer.Length);rn rn catch (Exception)rn rn MessageBox.Show("<em>发送</em>数据时发生错误!");rn return;rn rn接收rnint c = serialPort1.ReadByte();rnrichTextBox1.Text += c.ToString("X2") + " ";
为什么 串口通信 分多次接收数据
[img=http://ww3.sinaimg.cn/bmiddle/6fbcb931jw1dsf0vw63ujj.jpg][/img]rn参考的代码如下所示,我是直接把串口2、3脚短接后测试的。请教下为啥数据都是分几个来接收的呢?这样我不好处理数据呢。rn[code=C/C++]// comDlg.cpp : implementation filern//rnrn#include "stdafx.h"rn#include "com.h"rn#include "comDlg.h"rnrn#ifdef _DEBUGrn#define new DEBUG_NEWrn#undef THIS_FILErnstatic char THIS_FILE[] = __FILE__;rn#endifrnrnrnrnUINT CommProc(LPVOID pParam); //全局线程rnrn/////////////////////////////////////////////////////////////////////////////rn// CAboutDlg dialog used for App Aboutrnrnclass CAboutDlg : public CDialogrnrnpublic:rn CAboutDlg();rnrn// Dialog Datarn //AFX_DATA(CAboutDlg)rn enum IDD = IDD_ABOUTBOX ;rn //AFX_DATArnrn // ClassWizard generated virtual function overridesrn //AFX_VIRTUAL(CAboutDlg)rn protected:rn virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV supportrn //AFX_VIRTUALrnrn// Implementationrnprotected:rn //AFX_MSG(CAboutDlg)rn //AFX_MSGrn DECLARE_MESSAGE_MAP()rn;rnrnCAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)rnrn //AFX_DATA_INIT(CAboutDlg)rn //AFX_DATA_INITrnrnrnvoid CAboutDlg::DoDataExchange(CDataExchange* pDX)rnrn CDialog::DoDataExchange(pDX);rn //AFX_DATA_MAP(CAboutDlg)rn //AFX_DATA_MAPrnrnrnBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)rn //AFX_MSG_MAP(CAboutDlg)rn // No message handlersrn //AFX_MSG_MAPrn rnEND_MESSAGE_MAP()rnrn/////////////////////////////////////////////////////////////////////////////rn// CComDlg dialogrnrnCComDlg::CComDlg(CWnd* pParent /*=NULL*/)rn : CDialog(CComDlg::IDD, pParent)rnrn //AFX_DATA_INIT(CComDlg)rn m_send = _T("");rn //AFX_DATA_INITrn // Note that LoadIcon does not require a subsequent DestroyIcon in Win32rn m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);rnrnrnvoid CComDlg::DoDataExchange(CDataExchange* pDX)rnrn CDialog::DoDataExchange(pDX);rn //AFX_DATA_MAP(CComDlg)rn DDX_Control(pDX, IDC_EDIT2, m_receive);rn DDX_Control(pDX, IDC_COMBO2, m_bord);rn DDX_Control(pDX, IDC_COMBO1, m_port);rn DDX_Text(pDX, IDC_EDIT1, m_send);rn //AFX_DATA_MAPrnrnrnBEGIN_MESSAGE_MAP(CComDlg, CDialog)rn //AFX_MSG_MAP(CComDlg)rn ON_WM_SYSCOMMAND()rn ON_WM_PAINT()rn ON_WM_QUERYDRAGICON()rn ON_BN_CLICKED(IDC_BUTTON3, OnConnect)rn ON_BN_CLICKED(IDC_BUTTON1, OnSend)rn //AFX_MSG_MAPrn ON_MESSAGE(WM_COMMNOTIFY, OnCommNotify)rnEND_MESSAGE_MAP()rnrn/////////////////////////////////////////////////////////////////////////////rn// CComDlg message handlersrnrnBOOL CComDlg::OnInitDialog()rnrn CDialog::OnInitDialog();rnrn // Add "About..." menu item to system menu.rnrn // IDM_ABOUTBOX must be in the system command range.rn ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);rn ASSERT(IDM_ABOUTBOX < 0xF000);rnrn CMenu* pSysMenu = GetSystemMenu(FALSE);rn if (pSysMenu != NULL)rn rn CString strAboutMenu;rn strAboutMenu.LoadString(IDS_ABOUTBOX);rn if (!strAboutMenu.IsEmpty())rn rn pSysMenu->AppendMenu(MF_SEPARATOR);rn pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);rn rn rnrn // Set the icon for this dialog. The framework does this automaticallyrn // when the application's main window is not a dialogrn SetIcon(m_hIcon, TRUE); // Set big iconrn SetIcon(m_hIcon, FALSE); // Set small iconrn rn // TODO: Add extra initialization herern m_port.AddString("COM1");rn m_port.AddString("COM2");rn m_port.AddString("COM3");rn m_port.AddString("COM4");rn m_port.SetCurSel(0);rnrn m_bord.AddString("9600");rn m_bord.AddString("19200");rn m_bord.AddString("38400");rn m_bord.SetCurSel(0);rn //事件rn memset(&m_osRead, 0, sizeof(OVERLAPPED));rn memset(&m_osWrite, 0, sizeof(OVERLAPPED));rnrn if((m_hPostMsgEvent=CreateEvent(NULL, TRUE, TRUE, NULL))==NULL)rn MessageBox("为WM_COMMNOTIFY消息创建事件对象失败");rn // 为重叠读创建事件对象,手工重置,初始化为无信号的rn if((m_osRead.hEvent=CreateEvent(NULL, TRUE, FALSE, NULL))==NULL)rn MessageBox("为重叠读创建事件对象失败");rn // rn if((m_osWrite.hEvent=CreateEvent(NULL, TRUE, FALSE, NULL))==NULL)rn MessageBox("为重叠写创建事件对象失败");rnrn return TRUE; // return TRUE unless you set the focus to a controlrnrnrnvoid CComDlg::OnSysCommand(UINT nID, LPARAM lParam)rnrn if ((nID & 0xFFF0) == IDM_ABOUTBOX)rn rn CAboutDlg dlgAbout;rn dlgAbout.DoModal();rn rn elsern rn CDialog::OnSysCommand(nID, lParam);rn rnrnrn// If you add a minimize button to your dialog, you will need the code belowrn// to draw the icon. For MFC applications using the document/view model,rn// this is automatically done for you by the framework.rnrnvoid CComDlg::OnPaint() rnrn if (IsIconic())rn rn CPaintDC dc(this); // device context for paintingrnrn SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);rnrn // Center icon in client rectanglern int cxIcon = GetSystemMetrics(SM_CXICON);rn int cyIcon = GetSystemMetrics(SM_CYICON);rn CRect rect;rn GetClientRect(&rect);rn int x = (rect.Width() - cxIcon + 1) / 2;rn int y = (rect.Height() - cyIcon + 1) / 2;rnrn // Draw the iconrn dc.DrawIcon(x, y, m_hIcon);rn rn elsern rn CDialog::OnPaint();rn rnrnrn// The system calls this to obtain the cursor to display while the user dragsrn// the minimized window.rnHCURSOR CComDlg::OnQueryDragIcon()rnrn return (HCURSOR) m_hIcon;rnrnrnrn/////////////////////////////////////////////////////////rn// 用户代码部分rn//rn////////////////////////////////////////////////////////rn//串口号列表rnconst CString ComName[4]="COM1","COM2","COM3","COM4";rnrn//确认连接rnvoid CComDlg::OnConnect() rnrn CString sPort;rn COMMTIMEOUTS TimeOuts; //串口设置超时结构体rn sPort=ComName[m_port.GetCurSel()]; //获得所选串口号rn rn //打开一个串口设备rn h_com=CreateFile(sPort, GENERIC_READ | GENERIC_WRITE, 0, NULL,rn OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, rn NULL); // 重叠方式rn rn if(h_com==INVALID_HANDLE_VALUE)rn rn MessageBox("不能打开这个串口");rn return;rn rnrn SetupComm(h_com,4096,4096); //1.设置输入输出缓冲rn SetCommMask(h_com, EV_RXCHAR); //2.设置事件rnrnrnrn //3.超时设置rn // 把间隔超时设为最大,把总超时设为0将导致ReadFile立即返回并完成操作rn TimeOuts.ReadIntervalTimeout=MAXDWORD; rn TimeOuts.ReadTotalTimeoutMultiplier=0; rn TimeOuts.ReadTotalTimeoutConstant=0;rnrn /* 设置写超时以指定WriteComm成员函数中的GetOverlappedResult函数的等待时间*/rn TimeOuts.WriteTotalTimeoutMultiplier=50;rn TimeOuts.WriteTotalTimeoutConstant=2000;rnrn SetCommTimeouts(h_com, &TimeOuts);rnrn //4.配置串口rn if(!ConfigConnect())rn rn MessageBox("配置串口的时候失败");rn return;rn rn// m_bConnected=TRUE; //连接标志rnrn //5.打开<em>接收数据</em>线程rn //AfxBeginThread(CommProc,this);rn m_pThread=AfxBeginThread(CommProc, this, THREAD_PRIORITY_NORMAL, rn 0, CREATE_SUSPENDED, NULL); // 创建并挂起线程rn if(m_pThread==NULL)rn rn CloseHandle(h_com);rn rn elsern rn m_bConnected=TRUE;rn m_pThread->ResumeThread(); // 恢复线程运行rn rnrnrn//<em>发送</em>函数rnvoid CComDlg::OnSend() rnrn // TODO: Add your control notification handler code herern COMSTAT ComStat;rn ULONG nLength=0;rn UpdateData(true);rn ULONG szLength = m_send.GetLength();rn rn char *sz = new char[szLength];rn if(sz==NULL)rn return;rn memcpy(sz,m_send.GetBuffer(szLength),szLength);rn DWORD dwErrorFlags;rnrn ClearCommError(h_com,&dwErrorFlags,&ComStat);rn BOOL fState=WriteFile(h_com,sz,szLength,&nLength,&m_osWrite);rn if(!fState)rn rn ULONG my_error=GetLastError();rn if(my_error==ERROR_IO_PENDING)rn rn GetOverlappedResult(h_com,&m_osWrite,&nLength,TRUE);rn rn elsern nLength=0;rn rn delete[] sz;rn sz=NULL;rn rnrnrnrnrnrnconst ULONG TheBord[3]=9600,19200,38400; rn//配置串口rnBOOL CComDlg::ConfigConnect()rnrn DCB dcb;rnrn if(!GetCommState(h_com, &dcb))rn return FALSE;rnrn dcb.fBinary=TRUE;rn dcb.BaudRate = TheBord[m_bord.GetCurSel()]; // 数据传输速率rn dcb.ByteSize = 8; // 每字节位数rn dcb.fParity = TRUE; //校验rn dcb.Parity=NOPARITY; //为无校验rn dcb.StopBits=ONESTOPBIT; //1停止位rn rn // 硬件流控制设置rn dcb.fOutxCtsFlow = FALSE;rn dcb.fRtsControl = TRUE;rnrn // XON/XOFF流控制设置rn dcb.fInX=dcb.fOutX = TRUE;rn dcb.XonChar = 0x11;rn dcb.XoffChar = 0x13;rn dcb.XonLim = 50;rn dcb.XoffLim = 50;rnrn return SetCommState(h_com, &dcb);rnrnrnrn//工作者线程rn//用于判断串口是否接收到数据,如果有数据,就发信息给WM_COMMNOTIFYrn// 工作者线程,负责监视串行口rn//rnUINT CommProc(LPVOID pParam)rnrn OVERLAPPED os;rn DWORD dwMask, dwTrans;rn COMSTAT ComStat;rn DWORD dwErrorFlags;rn CComDlg *pX1=(CComDlg*)pParam;rnrn memset(&os, 0, sizeof(OVERLAPPED));rn os.hEvent=CreateEvent(NULL, TRUE, FALSE, NULL);rnrn if(os.hEvent==NULL)rn rn AfxMessageBox("Can't create event object!");rn return (UINT)-1;rn rnrn while(pX1->m_bConnected)rn rn ClearCommError(pX1->h_com,&dwErrorFlags,&ComStat);rnrn if(ComStat.cbInQue)rn rn // 无限等待WM_COMMNOTIFY消息被处理完rn WaitForSingleObject(pX1->m_hPostMsgEvent, INFINITE);rn //重置事件rn ResetEvent(pX1->m_hPostMsgEvent);rnrn // 通知!!!rn PostMessage(pX1->GetSafeHwnd(),WM_COMMNOTIFY, EV_RXCHAR, 0);rn //pX1->m_hTermWndrn continue;rn rnrn dwMask=0;rnrn if(!WaitCommEvent(pX1->h_com, &dwMask, &os)) // 重叠操作rn rnrn if(GetLastError()==ERROR_IO_PENDING)rn // 无限等待重叠操作结果rn GetOverlappedResult(pX1->h_com, &os, &dwTrans, TRUE);rn elsern rn CloseHandle(os.hEvent);rn return (UINT)-1;rn rn rn rnrn CloseHandle(os.hEvent);rn return 0;rnrnrnrn//串口消息函数(自己建立的消息)rnLRESULT CComDlg::OnCommNotify(WPARAM wParam, LPARAM lParam)rnrn rnrn if( (!m_bConnected) || (wParam&EV_RXCHAR)!=EV_RXCHAR)rn rn SetEvent(m_hPostMsgEvent); //允许允许<em>发送</em>下一个信息rn return 0L;rn rn //开始<em>接收数据</em>rn int nLength;rn char buf[4096/4];rn CString str;rn nLength=ReadComm(buf,100); //获取数据和长度rn if(nLength)rn rn for(int i=0;i
串口通信中关于接收数据的问题
小弟现在做了个<em>串口通信</em>的程序,当我把程序与串口调试助手调试的时候,我<em>发送</em>“we are friends”接收到的是“77 65 20 61 72 65 20 66 72 69 65 6E 64 73”谁能帮小弟解决一下。rn接收区的代码是:是用mscomm来写的程序;谢谢指导。rncase 2: //comEvReceiv事件,有数据到达 rn rn VARIANT variant_inp;rn COleSafeArray safearray_inp;rn LONG len,k;rn BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.rn CString strtemp;rn variant_inp=m_COM.GetInput(); //读缓冲区rn safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量rn len=safearray_inp.GetOneDimSize(); //得到有效数据长度rn for(k=0;k0)&&((m_iRecvDataCount%16)==0))rn rn strtemp.Format("\r\n");rn m_szRecvData += strtemp;rn rn rn UpdateData(FALSE); //更新编辑框内容rn if ((m_iRecvDataCount/16)>=13)rn rn rn m_Recv_Ctrl.SendMessage(EM_SCROLL, SB_LINEDOWN,0);rn rn rn m_nRecvCount+=len;rn his->UpdateData(FALSE);rn rn break; rn
在子线程中动态创建TClientSocket,如何发送接收数据
-
三步了解VB.NET串口通讯如何发送接收数据
VB.NET串口通讯支持总是让人觉得有所不足,在使用VB6的MsComm32.ocx时,很多人都会在VB.NET的开发中觉得很困扰。这里讲述的VB.NET串口通讯类使用native代码,并且它是通API调用实现的,你会发现VB.NET串口通讯就是这么简单。
如何对USB口发送接收数据!
这几天正在忙着做一个控制USB口的程序,USB通信芯片用的是.PL2303,它的驱动程序里ProductGUID=ECC3713C-08A4-40E3-95F1-7D0704F1CE5E;rn我查过一些以前大家发的贴子,但好像都不怎么完整,现在求各位兄弟们帮帮忙指点一下.我该用到哪些函数,需要下载哪些头文件,等等.谢谢了大家,分不够可以再加.!rn
sipdroid发送rtp包和接收rtp包模块如何发送接收数据的。
最近看sipdroid源码,对于RtpStreamSender和RtpStreamReceiver很不理解,数据编解码用jni调用的,阿卡是最后返回一个包的长度,在RtpPacket和RtpSocket也没有见到获取naive的编解码的库,数据是怎么被<em>发送</em>出去的呢?有人可以详细的解释以下吗?谢谢!
51单片机串口通信发送程序
程序用于51单片机的<em>串口通信</em><em>发送</em>程序,波特率为9600,
串口通信程序 接收发送
能实现简单的串口接收<em>发送</em>功能的程序 很有帮助哦
串口通信接收发送的问题
最近工作上在做<em>串口通信</em>。想请教一下,<em>如何</em>循环的<em>发送</em>命令和<em>接收数据</em>?rn另外还有就是假如通过串口<em>发送</em>完一条命令后,对方<em>发送</em>过来六七次的byte数组的数据<em>如何</em>将他们合并成一个byte数组?rn求指教!
串口通信Usart发送程序
使用Verilog代码编写的USART<em>发送</em>程序: 数据位8位,停止位1位,校验位没有,流控没有 波特率由波特率模块生成 串口时序大致如下图所示: module uart_trans(GClk,clk_bps,reset,tx_en,datain,Txd,tx_ok); input GClk,clk_bps,reset,tx_en;//全局时钟,波特率时钟,全局复位,<em>发送</em>启动信号
linux 串口通信发送文件
linux <em>串口通信</em><em>发送</em>文件
api串口通信发送程序
用API写的串口程序<em>发送</em>程序,此程序是基于win32API编写的<em>发送</em>程序代码,基于对话框的mfc应用程序
串口通信发送
串口设定 9600,n,8,1rn我用二进制模式<em>发送</em>数据160个字节,大概需要500毫秒,怎么这么慢rnrnSendByte(160)rnrn//打印开始时间rncomm1.output= SendBytern//打印结束时间rnrn开始时间- 结束时间 = 500毫秒rnrn是我串口设定有问题吗?怎么能让他快些
串口通信发送BMP位图??
各位大虾好,我现在能用VC做的界面打开一幅位图并显示它,但我想把它从串口<em>发送</em>出去,最好是用MSCOMM控件来<em>发送</em>。但我不知道该<em>如何</em>处理BMP文件?请教各位能给点具体的提示吗?请多多指教,多谢,多谢!!!rn
串口通信发送文件
我现在应上面要求要作个<em>串口通信</em> ,不使用微软的那个Active控件 完全用windows API实现 现在我实现了 <em>发送</em>字符和接收字符 ,但是上面今天又说后面这个是提供给别人做开发 需要扩展一个<em>发送</em>文件功能 ,在下迷茫了 希望路过的大牛们 为我指点迷经啊…… 在此先谢谢了
VC串口通信发送
利用MFC实现串口<em>发送</em>字符数据的实例程序
c#串口通信发送接受
c#<em>串口通信</em><em>发送</em>接受
串口通信数据发送不过去
[img=https://img-bbs.csdn.net/upload/201701/15/1484491918_893810.jpg][/img]rn为什么<em>发送</em>数据只能在自己的接受框显示,而不能在另一个串口接收框接收到,会是哪出现的问题啊?用API函数编写的基于对话框的MFC程序。求大神指导。[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/9.gif][/img]
51串口通信发送和接收
//<em>发送</em>数据波特率为9600 //1、如果在电脑上<em>发送</em>以$开始的字符串,则将整个字符串原样返回(字符串长度不是固定的)。 //2、如果接收到1,则将P10置高电平,接收到0,P10置低电平。(用来控制一个LED) #include "STC/STC15F2K60S2.H" sbit LED = P0^1; sbit ledle = P2^5; sbit bell = P4^5; un
51 串口通信-发送
#include &quot;reg52.h&quot; typedef unsigned int u16; typedef unsigned char u8; sbit k3 = P3^2; void UsartInit() { //<em>串口通信</em>配置 SCON=0X50; TMOD=0X20; PCON=0X80; TH1=0XF3; TL1=0XF3; ...
QT网络发送接收数据的问题
客户端向服务端<em>发送</em>自定义的数据比如:[code=c]struct infornchar cmd;rnchar name[10];rnchar pass[10];rnfirst;[/code]rn我<em>发送</em>的时候能直接用tcpclient->write((char*)&first,sizeof(struct info))<em>发送</em>吗?如果能,我在服务端怎么读出来呢?用server->read()来读?实际上就是一个怎么<em>发送</em>以及接受自定义数据的问题。。第一次发帖,还望大神指点。。谢谢了、、由于需要,刚接触QT。。。
有关socket发送接收数据问题。。。。。
我创建了一个socket,采用SOCK_STREAM,我需要<em>发送</em>多个数据,所以在<em>发送</em>端,就连着写了几个<em>发送</em>函数,比如说我发了一个A,一个b,但是在接收端怎么会接收到Ab呢,而且有的时候是这样,有的时候接收正确,一个A,一个b。
Python语言用UDP发送接收数据
1、下载网络试调助手:NetAssist NetAssist,用于接受或者<em>发送</em>数据,与Python进行通信 2、UDP<em>发送</em>数据程序代码 import socket def main(): #1、创建一个udp套接字 udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #从键盘获取数据 send_...
C# Socket发送接收数据问题
假设客户端调用socket.Send<em>发送</em>“123”,然后<em>发送</em>“nmb”。想要的效果是服务器端调用clientSocket.Receive分别接收“123”和“nmb”,可是通过调试发现,服务器端一次性接收“123nmb”。请问怎么实现服务器端分别接收完整的数据?
13进程pipe发送接收数据
深入学习多进程操作数据
客户端Socket发送接收数据的问题
小弟对socket不太熟悉rn我现在想通过Socket向服务器<em>发送</em>1个byte的数据并取得服务器送回的结果。rn哪位有例子?rn谢谢
C#post、get发送并且接收数据
public static string SendQingQiu(string sUrl, string sParam, string method) { string result = ""; HttpWebRequest req = WebRequest.Create(sUrl) as HttpWebRequest;
android连接SSM发送接收数据
//注册账户 URL url=null; HttpURLConnection httpURLConnection=null; String result=null,re=&quot;&quot;; BufferedReader bufferedReader=null; int y=0,l=0; ...
UDP网络程序-发送接收数据
UDP 网络程序流程 程序流程 创建一个基于 UDP 的网络程序流程很简单, 具体步骤如下: 创建 UDP 套接字 <em>发送</em>/<em>接收数据</em> 关闭套接字 创建 socket 在 Python 中 使用socket 模块的函数 socket 就可以完成: import socket socket.socket(AddressFamily, Type) 说明: 函数 socket...
DSP28335串口无法发送接收数据
简化的代码如下,给上位机的串口助手<em>发送</em>内容失败,串口助手<em>发送</em>内容给下位机也不行,通信格式配置应该是对的,本人刚学dsp,求大神告知。rnrnrn[code=c]#include "DSP2833x_Device.h"rn#include "DSP2833x_Examples.h"rnvoid sci_init(void);rnrnvoid main(void)rnrn Uint16 m;rn InitSysCtrl();rn InitSciGpio();rn sci_init();rn DINT;rn IER = 0x0000;rn IFR = 0x0000;rn InitPieCtrl();rn InitPieVectTable();rn IER|=M_INT8;rn EINT;rn ERTM;rn for(;;)rn rn if(ScibRegs.SCICTL2.bit.TXRDY==1)rn rn ScibRegs.SCITXBUF=5;//<em>发送</em>数字5rn rnrn if(ScibRegs.SCIRXST.bit.RXRDY==1)rn rn m=ScicRegs.SCIRXBUF.all;rn rn rnrnrnvoid sci_init(void)rnrn EALLOW;rn ScibRegs.SCICCR.all =0x0007;rn ScibRegs.SCICTL1.all =0x0003;rn ScibRegs.SCICTL2.bit.TXINTENA=1;rn ScibRegs.SCICTL2.bit.RXBKINTENA=1;rn ScibRegs.SCIHBAUD =0x0001;rn ScibRegs.SCILBAUD =0x00E7;rn ScibRegs.SCICTL1.bit.SWRESET=1;rn EDIS;rn[/code]rnrn[img=https://img-bbs.csdn.net/upload/201610/30/1477816076_516215.png][/img][img=https://img-bbs.csdn.net/upload/201610/30/1477816095_768131.png][/img]
MSComm1发送接收数据的问题,Thanks.
1.使用此程序循环拨打手机 每次程序运行后第一次拨打正常 如:recdata为ATD123456; 之后ATH挂断rn但第二次<em>发送</em>ATD123456;后无法拨打电话 程序如下:rnrn With MSComm1rn If .PortOpen = False Thenrn .CommPort = 3rn .Settings = "9600,N,8,1"rn .RThreshold = 2rn .PortOpen = Truern End Ifrn .Output = recdata & vbCrrn rn End Withrn rnExit Subrnrn2.当<em>发送</em>ATZ通过超级终端可以收到OK,但使用上面串口程序<em>发送</em>时,无法触发MSComm1_OnComm(),不能收到.Input中的内容 程序如下:rnrnPrivate Sub MSComm1_OnComm()rn Dim ATCommandResult As Stringrn Dim ATCLOGFile As Stringrn With MSComm1rn Select Case .CommEvent rn Case comEvReceivern ATCommandResult = .Inputrnrn End Selectrn End Withrnrn望指点rn
Java NIO UDP发送接收数据
Java的NIO包中,有一个专门用于<em>发送</em>UDP数据包的类:DatagramChannel,UDP是一种无连接的网络协议,不对传送数据包进行可靠性保证,适合于一次传输少量数据。一般用于<em>发送</em>一些准确度要求不太高的数据等。 完整的服务端程序如下:public class StatisticsServer { //每次<em>发送</em>接收的数据包大小 private final int MAX_BUFF
基于网络的智能教学系统的研究与开发pdf下载
现代信息技术的发展使得基于网络技术的多媒体教学平台成为现代教育教学技术改革与 发展的方向。网络教学平台的技术特点。基于网络技术的智能化的多媒体教学平台的设计思路及主要实现 方法。 相关下载链接:[url=//download.csdn.net/download/helen1989xie/2119817?utm_source=bbsseo]//download.csdn.net/download/helen1989xie/2119817?utm_source=bbsseo[/url]
移动设备模拟器\Openwave V7 Simulator下载
目前支持wap2.0规范的模拟器种类繁多,测试人员可以根据实际情况来选取模拟器进行测试。虽然openwave和winwap的通用性都很强,但是个人觉得openwave v7的安装和使用更为简单和方便。 PS: “浅谈使用openwave测试的几个注意项” 见如下网址! http://aiyan2001.javaeye.com/blog/241191 相关下载链接:[url=//download.csdn.net/download/libeely/2358762?utm_source=bbsseo]//download.csdn.net/download/libeely/2358762?utm_source=bbsseo[/url]
linux-ecos.doc linux-ecos.doc下载
linux-ecos.doc linux-ecos.doc linux-ecos.doc 相关下载链接:[url=//download.csdn.net/download/wanghe334/3538036?utm_source=bbsseo]//download.csdn.net/download/wanghe334/3538036?utm_source=bbsseo[/url]
我们是很有底线的