新手,在做基于C++的串口接收数据导入SQL数据库的程序。有问题想请教大家。

这是我写的串口接受的程序,现在可以接收串口数据并成功存入数据库,但是无法将数据根据需要存入数据库表中的特定列。接收的数据应该是以空格来断开,从而存入不同的表中,现在只能讲接受的数据都存入一列当中,请大家帮我看看程序,怎么改写。先谢过大家
void CChuankouDlg::OnComm()
{

xinxi m_xinxi;

// TODO: Add extra initialization here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString str;
CString str1;
CString str2;

CString strtemp;
if (m_ctrlComm.GetCommEvent() == 2)//事件值为2表示接收缓冲区内有字符
{

    variant_inp = m_ctrlComm.GetInput();
    safearray_inp = variant_inp;
    len = safearray_inp.GetOneDimSize();
    for (k = 0; k<len; k++)
    {
        safearray_inp.GetElement(&k, rxdata + k);
    }
    for (k = 0; k<len; k++)
    {
        BYTE bt = *(char*)(rxdata + k);
        strtemp.Format("%c", bt);
        m_strEditRXData += strtemp;
        str += strtemp;

    }

//::MessageBox(NULL,time,"当前时间",MB_OK);
COleDateTime time = COleDateTime::GetCurrentTime();
CString s1= time.Format("%y:%m:%d:%H:%M:%S");
m_xinxi.sql_insert(s1,str,str2);

}
UpdateData(FALSE);//更新编辑框内容

}

3个回答

u011043838
u011043838 恩,,我又用了sccanf函数,,但是现在不能显示数据了sscanf(strtemp, "%s %s",str,str2);
4 年多之前 回复

你可以分两步来解决你的问题:
1 数据通过串口接受与解析,以空格作为分割需要自己编码实现。有字符串处理函数可以方便的满足你的要求。好像是 strtok 之类,具体用法看帮助,有实例代码的。
2 写数据库

91program
91program 回复u011043838: sccanf 是格式化字符串成你想要的格式,但不是解析已有的字符串
4 年多之前 回复
u011043838
u011043838 恩,,我又用了sccanf函数,,但是现在不能显示数据了sscanf(strtemp, "%s %s",str,str2);
4 年多之前 回复

1.根据空格拆分数据,把数据放到一个数组里,可以参考

http://blog.csdn.net/butterfly_dreaming/article/details/10142443

2.然后把数据写入到数据库里

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
串口接收问题,新手请教!
功能是串口收到上位机发的01 02命令帧后,单片机返回01 02;rn如果上位机先发个01,然后过会儿再发02,则不做操作。rn弱弱的问一下单片机如何区分。rn
新手请教数据导入问题
rnrn 我在VFP6.0中要把excel2000中的一张表导入到VFP中,作为我的一张数据库表,可是他只支持excel1997的导入,难道我就真的不能利用excel这张表了吗,要知道这张表上有1000多个数据啊,我不想在VFP中再重新输入了,哪位有办法吗?在线等待急!急!急!
新手GPS串口接收问题请教
#include rn#include rn#include rn#include "SampleGPS.h"rn#include rnrn#define TEXTSIZE 70rnrnstruct DecodeUnit DlgMessage[] =rn WM_INITDIALOG ,DoInit,rn WM_COMMAND,DoCommand,rn;rnrnstruct DecodeUnit CommandMessage[] = rn IDOK,OnClose,rn IDCANCEL,OnClose,rn;rnrnrnrnHINSTANCE g_hInst;rnHANDLE g_hSendEvent = INVALID_HANDLE_VALUE;rnHANDLE hReadThread = INVALID_HANDLE_VALUE;rnHANDLE hThread;rnrnBOOL fContinue = TRUE;rnHANDLE hComPort = INVALID_HANDLE_VALUE;rnint nSpeed = CBR_9600;rnint nLastDev = -1;rnrnHWND hwnd ;rnrnint WINAPI WinMain(HINSTANCE hInstance, rn HINSTANCE hPrevInstance, rn LPTSTR lpCmdLine, rn int nCmdShow) rnrnrnrn DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgPorc);rn CommandBar_Show(NULL, TRUE);rn return (0);rnrnrnrnrnINT_PTR CALLBACK DlgPorc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)rnrn int i;rn for (i = 0;i < dim(DlgMessage);i++)rn rn if(DlgMessage[i].message == message)rn (*DlgMessage[i].fun)(hDlg,message,wParam,lParam);rn rnrn return FALSE;rnrnrnLONG DoCommand(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)rnrn int i ;rn for(i =0 ;i< dim(CommandMessage);++i)rn rn if(CommandMessage[i].message == LOWORD(wParam))rn (*CommandMessage[i].fun)(hDlg,message,wParam,lParam);rn rn return TRUE;rnrnrnLONG DoInit(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)rnrnrn TCHAR szDev[32] = TEXT("COM2:");rnrn InitCommunication (szDev);rnrn hwnd = hDlg;rnrnrn return TRUE;rnrnrnrnLONG OnClose(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)rnrn EndDialog(hDlg,0);rn return TRUE;rnrnrnrnHANDLE InitCommunication ( LPTSTR pszDevName) rn DCB dcb;rn TCHAR szDbg[128];rn COMMTIMEOUTS cto;rn HANDLE hLocal;rn DWORD dwTStat;rn hLocal = hComPort;rn hComPort = INVALID_HANDLE_VALUE;rnrn if (hLocal != INVALID_HANDLE_VALUE)rn CloseHandle (hLocal); rnrn hLocal = CreateFile (pszDevName, GENERIC_READ | GENERIC_WRITE,rn 0, NULL, OPEN_EXISTING, 0, NULL);rnrn if (hLocal != INVALID_HANDLE_VALUE) rn // 配置串口rn dcb.DCBlength = sizeof (dcb);rn GetCommState (hLocal, &dcb);rn dcb.BaudRate = nSpeed;rn dcb.fParity = FALSE;rn dcb.fNull = FALSE;rn dcb.StopBits = ONESTOPBIT;rn dcb.Parity = NOPARITY;rn dcb.ByteSize = 8;rn SetCommState (hLocal, &dcb);rnrn // 设定超时rn cto.ReadIntervalTimeout = 0;rn cto.ReadTotalTimeoutMultiplier = 0;rn cto.ReadTotalTimeoutConstant = 0;rn cto.WriteTotalTimeoutMultiplier = 0;rn cto.WriteTotalTimeoutConstant = 0;rn SetCommTimeouts (hLocal, &cto);rnrn // 启动读取线程rn hComPort = hLocal;rn if (!GetExitCodeThread (hReadThread, &dwTStat) ||rn (dwTStat != STILL_ACTIVE)) rn hReadThread = CreateThread (NULL, 0, ReadThread, NULL,rn 0, &dwTStat);rn if (hReadThread)rn CloseHandle (hReadThread);rn rn else rn wsprintf (szDbg, TEXT ("Couldn\'t open port %s. rc=%d\r\n"),rn pszDevName, GetLastError());rn MessageBox(NULL,szDbg,TEXT("message"),MB_OK | MB_ICONERROR);rn rn return hComPort;rnrnrnrnrnDWORD WINAPI ReadThread (PVOID pArg) rn HWND hWnd;rn DWORD cBytes, i;rn WCHAR szText[TEXTSIZE];rn char szAnsi[TEXTSIZE];rn size_t siz;rnrn HWND hlist = GetDlgItem(hwnd,IDC_LIST1);rn while (fContinue) rn for (i = 0; i < sizeof (szAnsi)-1; i++) rnrn while (!ReadFile (hComPort, &szAnsi[i], 1, &cBytes, 0))rn if (hComPort == INVALID_HANDLE_VALUE)rn return 0;rn if(i == 0 && szAnsi[i] != '$')rn rn i=-1;rn continue;rn rnrn if (szAnsi[i] == '\0' && szAnsi[i-1] == '\n') rn break;rn rn rn if (szAnsi[3]== 'R')rn rn //mbstowcs_s (&siz, szText, dim (szText), szAnsi, _TRUNCATE);rnrn ListBox_InsertString(hlist,0,szText);rn parserNEMA(szAnsi);rn rnrn rn return 0;rnrnrn/* 解析字符串 */ rnvoid parserNEMA(char *string) rn rn char block[10] = 0; rn int i = 0; rn int j = 0; rn int blockNum = 0; rnrn WCHAR szText[TEXTSIZE];rn char szAnsi[TEXTSIZE];rn size_t siz;rnrn HWND hlist = GetDlgItem(hwnd,IDC_LIST1);rn /* 没有数据 */ rn if(strlen(string) < 1) rn return; rnrn /* 不是"$"开头*/ rn if(string[0] == '$') rn rnrn while(i <= strlen(string)) rn rnrn while(string[i] != ',') rn rn /* 超出范围 */ rn if(i > strlen(string)) rn break; rn /* 取第一块 */ rn block[j++] = string[i++]; rn /* 越界 */ rn if(j >= sizeof(block)) rn break; rn rn if(string[i-1] == ',') rn rn block[0] = '0'; rn rnrn rn /* 跳过逗号 */ rn i++; rn /* 从block[0]开始存放 */ rn j = 0; rn /* 在这个swith语句中获取需要的数据块 */ rn switch(blockNum) rn rn case 0:/* 这是格式头 */ rn mbstowcs_s (&siz, szText, dim (szText), block, _TRUNCATE);rn ListBox_InsertString(hlist,0,szText);rn break;rn case 1: /* 第一块 */ rn break;rn case 2: /* 第二块 */ rn /* 自己需要第几块就case 几 */ rn break;rn rn memset(block, 0, sizeof(block)); /* 清空块缓存 */ rn blockNum++; rn rnrn rnrn rnrnrn程序如上,用的飞凌开发板的代码模板来编辑。但是问题是实际接收过程中,每固定5s时间刷新一次,实际上每秒钟更新一次。请问下是什么原因呢?是同步异步的关系吗?试了下异步接收好像还是存在同样的问题。如果修改textsize大小为100,那么接收频率为2s,2s,1s。再大就不知道多少时间了。一次gps数据包括很多格式,gprmc其中的一种,差不多一次接近70字节。
紧急问题,串口接收问题,请教大家.................
我的程序和单片机直接通讯,同样的程序,单片机端程序是9位处理机制的时候,我的程序能直接通讯正确。单片机程序改称8位处理时候,我的程序接受的数据就错了,但是同样的串口属性,用串口调试助手接受的就是正确的数据,而我的程序就不行,无论怎么改串口属性的是这样rnrn请教大家,昨天晚上调了一晚上也没调出个三四五来rnrn.............................
正在做基于J2ee的物流系统,有一问题想请教?
各位大虾有请了: rn 通过JSP网页向应用服务器提交大量的数据(在一个表单中,通过Post方法,交给Servlet处理),怎么做比较好? rnrn 小弟我的疑惑是,在表单中要设置成千上万个域吗?而且,提交的数据量是动态变化的,难道域的个数也是动态变化的吗? rnrn 小弟我对HTML不是很熟,不知道是否在HTML中有简便的方法,或者,用java script能做到吗? rn
基于单片机的串口接收程序
#include &quot;config.h&quot; /******************************串口1的波特率********************************/ //T1作波特率发生器 //在波特率加倍情况下  #define BAUD_57600                256 - (OSC_FREQ/192L)/57600L    // 254 FF #defin...
新手请教,txt大容量数据导入sql的问题
一个txt文本,大概200多mb,里面内容是这样的:rn前500行是每行一个整数:rn1rn2rn3rn4rn...rn...rn500rn从501行到2000多行是每行2个整数:rn1 2rn1 3rn1 4rn...rn...rn544 768rn544 769rn...rn剩下的几千行是每行3个整数:rn1 2 3rn1 2 4rn1 2 5rn...rn...rn456 543 678rn456 543 679rn...rn整数之间留有空格rn现在我建立了一个表,三列,想把txt中每一列对应导入到数据库表每一列中,某一列没有整数的话就空着。rn使用导入向导不知道如何设置对应关系,如何判定txt中每列整数对应到sql表中?如何忽略掉没有的数据?每列长度都不规则啊?有什么好办法吗?
请教串口接收问题
写了一个串口接收程序,功能就是当串口来数据时会将数据通过invoke显示到label控件中。我给串口不停的发送一个字符串,当停止发送数据时,仍然有这个字符串接收到,这是为什么呢?有没有办法停止发送了就不再接收之前的数据?rnrnvoid port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)rn rnrn serialReadString = String.Empty;rn serialReadString = sp.ReadLine();rn MessageBox.Show(serialReadString);rn label35.BeginInvoke(new System.EventHandler(ax),serialReadString);rn rn停止发送后,仍然不停有对话框弹出,显示这串字符串,但是串口监听软件看不到有字符串,
串口接收与SQL数据库存取
串口接收传感器网络数据,解析存入SQLserver数据库
linux c 串口接收程序
linux c 串口接收程序 包括串口设置
新手51串口接收的问题!!!!!
51串口每秒接收一组上位机数据,要求是如果这组数据是想要的就控制一个开关通断!想请教的是串口中断接收数据怎么才能很好的控制一个开关通断,开关平均500MS闭合一次!在接收中断函数里面写延时行不通!请教各位。。!
新手求救:数据库数据导入问题
在一个单对话框模式,连一个ODBC库,已成功.想导入一组记录或列里的所有数据到一个组合框里,没有成功.rn我是在对话框类里建一指针,怎么指也指不上,是指针建出错还是别的什么.rn想请问各位大侠如何做,指点一二,最好具体点,能有步骤,在此谢过.rn
?大家好,有关串口的问题想请教大家
如何通过com1 或com2端口实现三台机器的通讯?rn我用的是DB9针线连的2和3短接用了一根线,5号线接地,编程总是通不过,某一台机器上发数据,别的机器无法收到,我不知道该怎么办,有那位高手请指点一下 。
有谁是在做软件配置管理的,想请教一些问题
如何开始推行?rn版本控制?
51单片机串口接收问题请教
我用单片机接收一个数据例如是十六进制的123A,我接收的数据格式是什么那rn我从缓存sbuf读出的是什么呀,我想存成data[]=1,2,3,A,该怎么接收啊?rn我用rnfor (i=0,i<4,i++)rn data[i]=sbuf0;rn可以吗?rn请指点谢谢了
串口接收问题???请教高手!
[code=C#]private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)rn rn if (!R) return;rnrn if (serialPort1.BytesToRead == 0)rn rn return;rn rn int bytes = serialPort1.BytesToRead;rn byte[] buffer = new byte[bytes]; rn serialPort1.Read(buffer, 0, bytes);rn foreach (byte b in buffer)rn rn if (b == 0xFF)rn rn R = false;rn return;rn rn string read = System.Text.Encoding.Default.GetString(buffer);rn richtextBox1 +=read;rn rn rn [/code]rn为什么调试通不过呢?说从不是主线程调用什么的??我是新手 不大懂 希望高手指教!!!在网上还看到关于用什么异步委托来rn接收显示数据,看不懂还请高手指点迷津!!
新手有问题想请教(c语言内存和指针)
rnrn![图片说明](https://img-ask.csdn.net/upload/201704/24/1493021004_649618.png)rn这几天在用memcpy的时间突然想用malloc申请一段空间然后给他挨个输入成0,1,2,3,结果就写了这么一段程序然后发现不能实现结果唉,有大神帮我解解惑吗,我是新手,正在学习阶段~~谢谢亲们
基于Linux平台的串口数据接收程序
基于Linux平台的串口数据接收源程序,可以直接在Linxu平台下进行功能测试。
基于evc的wince串口接收发送程序
基于evc的wince串口接收发送程序,适用于evc++4.0
串口接收试验.c
串口接收试验的c语言编程,了解基本的串口通信
基于s3c2440的串口中断接收程序
该程序是用s3c2440来实现对串口中断接收的程序。 在接收到相应字符时来控制一个led灯的亮灭,并且将接收到的字符 返回发送给PC机。 简单,利于初学者学习串口中断。
基于485串口的发送接收程序
基于485的串口发送接收程序,RS485和RE232的程序设计差不多,只有差了一个使能端而已,同样可以用。加入了自己的协议,协议可以自己随便设置。程序可以用调试助手测试。很好很强大,条例很清晰。
windows下C语言版串口接收程序(基于VS2017)
#include &quot;pch.h&quot; #define _CRT_SECURE_NO_WARNINGS  #include &amp;lt;iostream&amp;gt; #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;windows.h&amp;gt; #include &amp;lt;string.h&amp;gt; #include &amp;lt;conio.h&amp;gt; #include &quot;tchar.h&qu
基于mini2440的串口发送接收通信程序
基于mini2440的嵌入式环境,完全可用的串口发送接收通信程序
请教:串口接收不对??
各位大侠,我用51单片机的串口接收数据rn在开始的几秒内接收是正确的,可是过一会就接收不正确了,为甚呢??rn串口以9600的波特率一直在接收数据,是不是接收时间长波特率就乱了?rnvoid serial() interrupt 4 using 1 rnrn RI=0;rn if(SBUF==0x40)rn a++;rn if((a==2)&&(SBUF==0x48))rn b++; rn if((b==1)&&(SBUF==0x61))rn flag++;rn rn if(flag==1)rn rn if(igps==53) //此时为跟踪到的卫星数rn rn a=SBUF; rnrn if(a>2) //如果接收到的卫星数>2颗,同步灯亮rn P1_3=1;rn else rn P1_3=0;rnrn a=0;rn b=0;rn flag=0;rn igps=0;rn rn else rn igps++;rn rnrnrn程序注释:串口收到@@Ha后,对收到的第53个字符进行判断,如果大于2就将P1.3制高,小于2就制低,然后重新判断是否接收@@Ha
请教sql server数据导入的问题
有A、B两台SQl SERVER2005服务器,现在想在A上做一个查询,然后把结果导到B上的表里。rn查询要涉及到7、8个表,一个语句不好查出来,rn分了两个步骤:第一步查完了暂存到临时表里,第二步用临时表继续关联查出结果。rn现在情况是,A服务器只有它的查询权限,不能在上面建物理表、过程或视图,rn1、用导入向导的话,因为查询是好几个句子,提示不是一个查询,不能直接导rn2、用链接服务器得时候,第一步确实挺快,但是暂存的时候临时表是建立在B服务器上的,A上的表有一些非常大,用B上的临时表和远程的A继续关联时,效率其低,慢的不能忍受rn3、想用ssis,里面的导入导出也是只能单一个句子,多语句最后得出的查询就不行了rnrn现在的前提就是A服务器不能建立物理表,想保证查询效率,今后要把这些弄成定时运行的,rnrn小弟想请教一下,用链接服务器的时候,能不能在第一步查询的时候把临时表建立在链接服务器上呢?rn或者ssis里面有没有什么好办法能在远程服务器上多语句查询,然后导出?rn或者还有什么别的好办法吗?rn谢谢各位指点个!
如何将PC机接收的串口数据导入MySQL数据库?
项目中PC机作为网关,用Apache+MySQL+PHP架设WEB服务器,PC机串口接收无线模块发送的数据,现在要将串口的数据直接导入MySQL数据库中,请问各位高手怎样通过串口编程截取串口数据然后导入MySQL数据库中?
请教sql server数据导入问题
- 正在执行 (错误)rn 消息rn * 错误 0xc02020a1: 数据流任务 1: 数据转换失败。列“列 0”的数据转换返回状态值 4 和状态文本“文本被截断,或者一个或多个字符在目标代码页中没有匹配项。”。rn (SQL Server 导入和导出向导)rn rn * 错误 0xc020902a: 数据流任务 1: “输出列“列 0”(10)”由于发生截断而失败,而且针对“输出列“列 0”(10)”的截断行处理设置指定截断时出错。在指定组件的指定对象上出现截断错误。rn (SQL Server 导入和导出向导)rn rn * 错误 0xc0202092: 数据流任务 1: 处理文件“E:\pir_psn_4\pir_psn_4.dat”的数据行 715 时出错。rn (SQL Server 导入和导出向导)rn rn * 错误 0xc0047038: 数据流任务 1: SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。组件“源 - pir_psn_4_dat”(1) 的 PrimeOutput 方法返回了错误代码 0xC0202092。管道引擎调用 PrimeOutput() 时该组件返回了一个失败代码。虽然该失败代码只与该组件有关,但这个错误是致命的,管道已停止执行。可能在此之前已经发出错误消息,提供了有关失败的详细信息。rn (SQL Server 导入和导出向导)rn rnrn我想导入一个48.6G的.dat文件,之前导入一个从这48.6G下切割下来的100M文件,可以导入,但这个大文件导入时总是报错,求各路大侠赐教,在线等。。rnrnrn
LM3S8962串口接收程序 C语言
包含头文件和源代码~ 能够完成串口接收字符串的功能,通过条件的限制可以接收特定的字符串
ht46ru232 串口接收、发送程序 C语言
ht46ru232 串口接收、发送程序 C语言 ht46ru232 串口接收、发送程序 C语言
STM32F103串口发送接收C程序
STM32F103串口发送接收C程序,keil开发环境,程序包含编译后全部内容,可直接使用
想请教下串口接收的问题
请教下485串口接收的问题.想问下怎样才能让串口接收到数据?
VC++MSComm串口接收程序
VC++MSComm串口接收程序示例,内含基于C++创建MFC的界面过程步骤。
串口接收程序
用硬件描述语言Verilog写的串口接收程序,包括测试文档和源程序
linux下的串口接收程序
我在linux下写了一个串口接收程序,不停地向串口发送“Network formed, waiting for RX“,但却接收不到,请大家帮忙看看什么问题rnrn#include /*标准输入输出定义*/rn#include /*标准函数库定义*/rn#include /*Unix 标准函数定义*/rn#include rn#include rn#include /*文件控制定义*/rn#include /*PPSIX 终端控制定义*/rn#include /*错误号定义*/rnrn#define FALSE -1rn#define TRUE 0rnrn/*struct termiorn unsigned short c_iflag; rn unsigned short c_oflag; rn unsigned short c_cflag; rn unsigned short c_lflag; rn unsigned char c_line; rn unsigned char c_cc[NCC]; rn;rn*/rnrnstruct termios Opt;rnrnint speed_arr[] = B38400, B19200, B9600, B4800, B2400, B1200, B300,rn B57600, B19200, B9600, B4800, B2400, B1200, B300, ;rnint name_arr[] = 38400, 19200, 9600, 4800, 2400, 1200, 300, 57600,rnrn 19200, 9600, 4800, 2400, 1200, 300, ;rnvoid set_speed(int fd, int speed)rn int i;rn int status;rn struct termios Opt;rn tcgetattr(fd, &Opt);rn for ( i= 0; i < sizeof(speed_arr) / sizeof(int); i++) rn if (speed == name_arr[i]) rn tcflush(fd, TCIOFLUSH); rn cfsetispeed(&Opt, speed_arr[i]);rn cfsetospeed(&Opt, speed_arr[i]); rn status = tcsetattr(fd, TCSANOW, &Opt);rn if (status != 0) rn perror("tcsetattr fd1");rn return; rn rn tcflush(fd,TCIOFLUSH); rn rn rnrnrn/*设置校验位*/rnint set_Parity(int fd,int databits,int stopbits,int parity)rnrn struct termios options;rn if ( tcgetattr( fd,&options) != 0) rn perror("SetupSerial 1"); rn return(FALSE);rn rn options.c_cflag &= ~CSIZE;rn switch (databits) /*设置数据位数*/rn rn case 7: rn options.c_cflag |= CS7;rn break;rn case 8: rn options.c_cflag |= CS8;rn break; rn default: rn fprintf(stderr,"Unsupported data sizen"); return (FALSE);rn rnswitch (parity)rn rn case 'n':rn case 'N': rn options.c_cflag &= ~PARENB; /* Clear parity enable */rn options.c_iflag &= ~INPCK; /* Enable parity checking */rn break;rn case 'o': rn case 'O': rn options.c_cflag |= (PARODD | PARENB); /* 设置为奇效验*/rn options.c_iflag |= INPCK; /* Disnable parity checking */rn break;rn case 'e':rn case 'E': rn options.c_cflag |= PARENB; /* Enable parity */ rn options.c_cflag &= ~PARODD; /* 转换为偶效验*/ rn options.c_iflag |= INPCK; /* Disnable parity checking */rn break;rn case 'S':rn case 's': /*as no parity*/ rn options.c_cflag &= ~PARENB;rn options.c_cflag &= ~CSTOPB;break;rn default: rn fprintf(stderr,"Unsupported parityn"); rn return (FALSE);rnrn/* 设置停止位*/rnswitch (stopbits)rn rn case 1: rn options.c_cflag &= ~CSTOPB;rn break;rn case 2: rn options.c_cflag |= CSTOPB;rn break;rn default: rn fprintf(stderr,"Unsupported stop bitsn");rn return (FALSE);rnrn/* Set input parity option */rnif (parity != 'n') rn options.c_iflag |= INPCK;rntcflush(fd,TCIFLUSH);rnoptions.c_cc[VTIME] = 150; /* 设置超时15 seconds*/ rnoptions.c_cc[VMIN] = 0; /* Update the options and do it NOW */rnrnif (tcsetattr(fd,TCSANOW,&options) != 0) rnrn perror("SetupSerial 3"); rn return (FALSE);rnrnreturn (TRUE);rnrnrnint OpenDev(char *Dev)rnrn int fd = open( Dev, O_RDWR ); //| O_NOCTTY | O_NDELAY rn if (-1 == fd) rn rn perror("Can't Open Serial Port");rn return -1; rn rn else rn return fd;rnrnrnint main(int argc, char **argv)rn int fd;rn int nread;rn char buff[30];rn char temp[]="Network formed, waiting for RX";rn char *dev = "/dev/ttyS0"; //串口1rn fd = OpenDev(dev);rn set_speed(fd,57600);rn if (set_Parity(fd,8,1,'N') == FALSE) rn printf("Set Parity Errorn");rn exit (0);rn rn nread=sizeof(temp);rn rnwhile (1) //循环读取数据rn rn while(read(fd, buff, nread)==nread)rn rn rn printf( "%s", buff); rn rnrn //close(fd);rn // exit (0);rn
串口接收和发送程序
基于串口232的接收和发送程序,同时可以讲接收到的字符显示在液晶上
STM32的串口接收程序
通过向串口1发送数据,主程序停止,产生中断,可以控制LED灯的闪烁模式,最终会退回主程序
C#串口接收程序
各位大侠好,我做了一个串口的接受程序,如何控制每次接收的字节数?我想实现每两个数据合成一个数据再显示。我的程序如下:但是jiexi()好象不对rnrnrnprivate void timer1_Tick(object sender, EventArgs e)rn rnrnrn timer1.Interval = 1000;rn // Convert.ToInt32(Convert.ToDouble(frm3.trackBar1.Value / 4) * 1000);rn timer1.Enabled = false;rn jiexi();rn timer1.Enabled = true;rnrn rnrn private void 开始ToolStripMenuItem_Click(object sender, EventArgs e)//开始接收rn rn frm3.serialPort1.BaudRate = Convert.ToInt32(frm3.comboBox2.Text);rn frm3.serialPort1.PortName = frm3.comboBox1.Text;rn frm3.serialPort1.Open();rn //jiexi();rn timer1.Enabled = true;rn rn rnrn public void jiexi()rn rn int j = 0;rn // int k = 1;rn // byte[] a=new byte[1];rn // string a = null;rn // int bytes = frm3.serialPort1.BytesToRead;rn byte[] buffer = new byte[10];rn int[] buffer1 = new int[10];rn rn frm3.serialPort1.Read(buffer, 0, 10);rnrn if (buffer == null)rn return; rnrn for (int i = 0; i < 10; i += 2)rn rn buffer1[j++] =Convert.ToInt32(buffer[i])* 256+ Convert.ToInt32(buffer[i + 1]);rn rnrn if (buffer1 != null)rn rn frm2.xianshi1(buffer1);rnrn buffer1 = null;rn buffer = null;rn rn
cc2430串口接收程序?
#define SET_MAIN_CLOCK_SOURCE(source) \rn do \rn if(source) \rn CLKCON |= 0x40; /*RC*/ \rn while(!(SLEEP&0X20)); /*待稳*/ \rn SLEEP |= 0x04; /*关掉不用的*/ \rn \rn else \rn SLEEP &= ~0x04; /*全开*/ \rn while(!(SLEEP&0X40));/*待稳*/ \rn asm("NOP"); \rn CLKCON &= ~0x47; /*晶振*/ \rn SLEEP |= 0x04; /*关掉不用的*/ \rn \rn while (0) rnrn上面 SLEEP |= 0x04; CLKCON |= 0x40; 到底是什么意思啊,不是很懂,期待解决??????????????????????
NUC100RE3AN串口接收程序
读这篇文章之前,要先读上一篇文章《NUC100RE3AN串口驱动库修改》 本人在实习中的项目需要接收一个具有25个数据的包,起始0x0f,结束0x00,需要用定时器检测是否丢包,使用库函数DrvUART_Read效果并不好。下面给出我的做法。 1、首先是初始化 void init(){ STR_UART_T uartParam; UNLOCKREG (); DrvSYS_Open (
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数