请问谁有在BCB环境下的spcomm简单例子?

mark2003 2007-08-06 11:40:28
我需要的是使用C++语言或者C语言的例子
...全文
268 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chinaneu 2008-05-13
  • 打赏
  • 举报
回复
我利用Delphi下的SPComm翻译成CB下的代码:
http://topic.csdn.net/u/20080402/12/25ff1747-2674-40ab-aa07-28b561b638e0.html
东写西读99453 2008-05-10
  • 打赏
  • 举报
回复
好用
csrwgs 2007-08-10
  • 打赏
  • 举报
回复
有一个SerialPort的类,感觉不错
大问题就是 不能同时操作2个串口
MEFULEU 2007-08-09
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SPComm"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Comm1->CommName=cmbcom->Text;
try
{
Comm1->StopComm();
Comm1->StartComm();
Button2->Enabled=Comm1->GetModemState();
if (Button2->Enabled)
{
Memo->Lines->Add("成功打开串口:"+cmbcom->Text);
}
else
Memo->Lines->Add("打开端口失败");

}
catch(...)
{
Memo->Lines->Add("打开串口错误!");
;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
AnsiString str= cmbvalue->Text;
if (str=="")
{
ShowMessage("请输入写入串口的内容!");
return;
}
AnsiString value=str.SubString(1,2);
int v=StrToInt("0x"+value);
char b[2];
b[0] =v;
b[1] ='\0';
Comm1->WriteCommData(b,1);
Memo->Lines->Add("往串口写入数据:0x"+value);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
try
{
Comm1->StopComm();
Memo->Lines->Add("成功关闭串口:"+cmbcom->Text);
Button2->Enabled=Comm1->GetModemState();
}
catch(...)
{
Memo->Lines->Add("关闭串口失败");
;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
String s=Memo->Lines->Strings[0];
Memo->Lines->Clear();
Memo->Lines->Add(s);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Comm1ReceiveData(TObject *Sender, Pointer Buffer,
WORD BufferLength)
{
AnsiString str="";
char *c=new char [BufferLength+1];
BYTE b;
memcpy(c,Buffer,BufferLength);

for (int i=0;i<BufferLength;i++)
{
b=c[i];
str=str+" 0x"+IntToHex(b,2);
}
Memo->Lines->Add("接收到返回结果:"+str);
delete []c;
}
//---------------------------------------------------------------------------


xjq2003 2007-08-09
  • 打赏
  • 举报
回复
上面有例子了,我就不发了
laowang2 2007-08-09
  • 打赏
  • 举报
回复
up
9527 2007-08-08
  • 打赏
  • 举报
回复
自己看吧,这个比较简单

spCom->CommName = cmbCOMName->Text;
try
{
spCom->StartComm();
}catch(...){
Application->MessageBox("无法打开指定端口", "错误", MB_OK+MB_ICONERROR);
return;
}
FInProgress = !FInProgress; //开始数传
btnDownLoad->Caption = "终止";
while(FInProgress)
{
Application->ProcessMessages();
}
spCom->StopComm();


-------------
void __fastcall TfrmExchgHandset::spComReceiveData(TObject *Sender,
Pointer Buffer, WORD BufferLength)
{
char *ptr, *ptBuffer = (char *)Buffer, szSendBuffer[100];
if(strncmpi(ptBuffer, SERIAL_USER, strlen(SERIAL_USER))==0)
{
CurrStep = STEP_USER;
ptr = strstr(ptBuffer+strlen(SERIAL_USER), "\r");
memcpy(FConnectedUserNo, ptBuffer+strlen(SERIAL_USER), ptr-ptBuffer-strlen(SERIAL_USER));
}else if(strncmpi(ptBuffer, SERIAL_NEXT, strlen(SERIAL_NEXT))==0)
{
CurrStep = STEP_NEXT;
}


switch(CurrStep)
{
case STEP_USER:
spCom->WriteCommData((char *)SERIAL_WELCOME, strlen(SERIAL_WELCOME));

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧