c++如何向串口写一个带串口工具 加回车换行行的字符串

c++中使用串口,如何编写使用串口程序?急求
C++中使用串口通信,怎样编写串口程序
浏览 453回答 0
随时随地看视频C++得到系统活动、可用的串口及名称的两种方法
CreateFile方法:
void GetComList_256(CComboBox *
CCombox)//获取可用com口支持到256个
CString &strCom,strComO
int &nCom &=
int &count &=
HANDLE & &hC
CCombox-&ResetContent();
strCom.Format("COM%d", &nCom);
strComOpen.Format("\\\\.\\COM%d",
&CreateFile(strComOpen,
&GENERIC_READ | GENERIC_WRITE,
&0, &NULL, &
OPEN_EXISTING, &FILE_FLAG_OVERLAPPED,
if(INVALID_HANDLE_VALUE &==
&hCom &) &
DWORD error=::GetLastError();//取得错误信息&
CCombox-&AddString( strCom );
CloseHandle(hCom);
} &while(nCom&256);
CCombox-&SetCurSel(0);
*******************************************************************
读取注册表方法:
int GetComList_Reg( CComboBox * CCombox )
& & int i = 0;
& & CString
strComN//串口名称
CString strDrN//串口详细名称
& & result = RegOpenKeyEx(
HKEY_LOCAL_MACHINE,
"Hardware\\DeviceMap\\SerialComm" ),
& & KEY_READ,
& & if( ERROR_SUCCESS ==
result ) & // & 打开串口注册表
& TCHAR portName[ 0x100 ], commName[ 0x100
& DWORD dwLong, dwS
CCombox-&ResetContent();
& & & dwSize =
sizeof( portName ) / sizeof( TCHAR );
& & & dwLong =
& & & result =
RegEnumValue( hkey, i, portName, &dwLong, NULL,
NULL, ( LPBYTE )commName, &dwSize );
ERROR_NO_MORE_ITEMS == result )
& commName就是串口名字"COM2"
strComName=commN
strDrName = portN
// 从右往左边开始查找第一个'\\',获取左边字符串的长度
int len = strDrName.ReverseFind( '\\');
// 获取'\\'左边的字符串
CString strFilePath = strDrName.Left( len+1 );
// 获取'\\'右边的字符串
CString fileName = strDrName.Right(strDrName.GetLength() -
fileName = strComName + _T(": ")+fileN
CCombox-&AddString(fileName);
& & & i++;
& } while ( 1 );
& RegCloseKey( hkey );
CCombox-&SetCurSel(0);
读取后还可以加入到组合框中,可以根据需要加入到数据中。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。用++写一个控制串口的程序,谢谢。
下面是我原来编制的一个模块,希望对你有用:void BitBtn0Click(){
char *ComNo;
//取得要打开的通信端口
Temp = &COM&+IntToStr(rdCOM-&ItemIndex +1);
//转换至指针类型Char
ComNo = Temp.c_str();
hComm = CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, 0.....
下面是我原来编制的一个模块,希望对你有用:void BitBtn0Click(){
char *ComNo;
//取得要打开的通信端口
Temp = &COM&+IntToStr(rdCOM-&ItemIndex +1);
//转换至指针类型Char
ComNo = Temp.c_str();
hComm = CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, 0);
if (hComm == INVALID_HANDLE_VALUE) // 如果COM 未打开
MessageBox(0, &打开通信端口错误!!&,&Comm Error&,MB_OK);
//将dcb地址传入,以取得通信参数
GetCommState(hComm,&dcb);
// 得知目前COM 的状态
dcb.BaudRate = CBR_9600;
// 设置波特率为9600
dcb.ByteSize = 8;
// 字节为 8 bit
dcb.Parity = NOPARITY;
// Parity 为 None
dcb.StopBits = ONESTOPBIT;
// 1 个Stop bit
//通信端口设置
if (!SetCommState(hComm, &dcb))
{ // 设置COM 的状态
MessageBox (0, &通信端口设置错误!!!&,&Set Error&,MB_OK);
CloseHandle(hComm);
EscapeCommFunction( hComm, CLRDTR); //将DTR降为低电位
EscapeCommFunction( hComm, CLRRTS); //将RTS降为低电位}//-------------------------------------------------------void BitBtn1Click(){
//若通信端口未打开,则不作动作,并跳出
if (hComm==0)
MessageBox (0, &通信端口未打开!!!&,&Open Error&,MB_OK);
if (hComm == INVALID_HANDLE_VALUE) // 如果COM 未打开
MessageBox(0, &打开通信端口错误!!&,&Comm Error&,MB_OK);
//判断DTRState值,输出状态后,将原值作转态
if (DTRState)
//输出DTR状态为低电位
EscapeCommFunction( hComm, CLRDTR );
spDTR-&Brush-&Color=clW //更改信号灯的颜色
//输出DTR的状态为高电位
EscapeCommFunction( hComm, SETDTR );
spDTR-&Brush-&Color=clR //更改信号灯的颜色
DTRState =~DTRS //将DTRState转态}//-------------------------------------------------------void Button2Click(){
if (hComm!=INVALID_HANDLE_VALUE)
CloseHandle(hComm);
exit(EXIT_SUCCESS);}//-------------------------------------------------------void BitBtn3Click(){
//若通信端口未打开,则不作动作,并跳出
if (hComm==0)
MessageBox (0, &通信端口未打开!!!&,&Open Error&,MB_OK);
if (hComm == INVALID_HANDLE_VALUE) // 如果COM 未打开
MessageBox(0, &打开通信端口错误!!&,&Comm Error&,MB_OK);
//判断RTSState值,输出状态后,将原值作转态
if (RTSState)
//输出RTS状态为低电位
EscapeCommFunction( hComm, CLRRTS );
spRTS-&Brush-&Color=clW //更改信号灯的颜色
//输出RTS的状态为高电位
EscapeCommFunction( hComm, SETRTS );
spRTS-&Brush-&Color=clR //更改信号灯的颜色
RTSState =~RTSS //将RTSState转态}
类似问题换一批
你老公大腿间疼不?如果疼,千万别憋他,你可以抽出3天,没天4次,没次10分钟以上,让他完成作业。次为一聊程,病情严重加2聊程。 好了记得谢我。
有问题 @ 爱问Powered by iask.com
举报原因(必选):
广告或垃圾信息
不雅词句或人身攻击
激进时政或意识形态话题
侵犯他人隐私
其它违法和不良信息关于MFC串口发送字符串的问题【c++吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:303,602贴子:
关于MFC串口发送字符串的问题收藏
void Cckp1Dlg::OnBnClickedButton11(){ // TODO: 在此添加控件通知处理程序代码 CString sendstring11; UpdateData(true); //读取编辑框内容
sprintf(tx_buf,"m11=%ld",m_senddata11); sendstring11=tx_
m_com.put_Output(COleVariant(sendstring11));//发送数据 m_senddata11.Empty(); //发送后清空输入框 UpdateData(false); //更新编辑框内容
//对发送的数据进行强制类型转换,由CString 字符串数据转换为VARIANT 类型。}这是我写的发送按键的处理函数,我输入1,按照我的设想应该在串口助手收到“m11=1”的字符串,但是为什么串口助手收到的是“m11=5559768”,怎么会收到一长串数字,求会的人指点下。
%d is for signed int, Use %u specifically for unsigned int. Long and int types are same. %ld is for long int.
原因很简单。。。。你是大神。。。。所以。。。。。忘了看手册。。。
编辑框里得到的是字符量;
登录百度帐号用visual C++怎样编一个最简单的串口程序_百度知道
用visual C++怎样编一个最简单的串口程序
我有更好的答案
com.setoutput(&0xf0&);这句语句就可以了.就是发送一个数据的意思.com是串口控件,setoutput是它的一个成员函数.
采纳率:97%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 串口发送回车换行 的文章

 

随机推荐