yicun0412 发表于 2011-8-26 17:01:49

C++builder串口报错

这是我根据一个串口例子敲得程序
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

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

void __fastcall TForm1::Button1Click(TObject *Sender)
{
char *ComNo;
DCB dcb;
String Temp;
Temp="COM"+IntToStr(RadioGroup1->ItemIndex+1);
//转换至指针类型
ComNo=Temp.c_str();
hComm=CreateFile(ComNo,GENERIC_READ|GENERIC_WRITE,
                0,NULL,OPEN_EXISTING,0,0);
if(hComm==INVALID_HANDLE_VALUE)//如果通信端口未打开
{
      MessageBox(0,"打开通信端口错误!!","Comm Error",MB_OK);
      return;
}
GetCommState(hComm,&dcb);//得知目前通信端口状态
dcb.BaudRate=CBR_19200;
dcb.ByteSize=8;            //8位字节
dcb.Parity=NOPARITY;    //Parity为None
dcb.StopBits=ONESTOPBIT;
//通信端口设置
if(!SetCommState(hComm,&dcb))
{
      MessageBox(0,"通信端口设置错误!!","Set Error",MB_OK);
      CloseHandle(hComm);
      return;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(hComm!=INVALID_HANDLE_VALUE) CloseHandle(hComm);
exit(EXIT_SUCCESS);      
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3KeyPress(TObject *Sender, char &Key)
{
//下面是对按键做OnKeyPress双击后的编程

String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if(hComm==0)
{
      MessageBox(0,"通信端口未打开!!","Open Error",MB_OK);
      return;
}
Temp="A";   //定义发送的字符串
//Temp="A";
SendData=temp.c_str();//字符串转换
//取的发送的字符串数
BS=Temp.Length();
//BS=StrLen(SendData);
//实际发送动作
WriteFile(hComm,SendData,BS,&lrc,NULL);//送出数据      
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4KeyPress(TObject *Sender, char &Key)
{
String temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if(hComm==0)
{
      MessageBox(0,"通信端口未打开!!","Open Error",MB_OK);
      return;
}
Temp="B";   //定义发送的字符串
SendData=Temp.c_str();//字符串转换
//取的发送的字符串数
BS=Temp.Length();
//BS=StrLen(SendData);
//实际发送动作
WriteFile(hComm,SendData,BS,&lrc,NULL);//送出数据      
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5KeyPress(TObject *Sender, char &Key)
{
String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if(hComm==0)
{
      MessageBox(0,"通信端口未打开!!","Open Error",MB_OK);
      return;
}
Temp="C";   //定义发送的字符串
SendData=Temp.c_str();//字符串转换
//取的发送的字符串数
BS=Temp.Length();
//BS=StrLen(SendData);
//实际发送动作
WriteFile(hComm,SendData,BS,&lrc,NULL);//送出数据      
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6KeyPress(TObject *Sender, char &Key)
{
String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if(hComm==0)
{
      MessageBox(0,"通信端口未打开!!","Open Error",MB_OK);
      return;
}
Temp="D";   //定义发送的字符串
SendData=Temp.c_str();//字符串转换
//取的发送的字符串数
BS=Temp.Length();
//BS=StrLen(SendData);
//实际发送动作
WriteFile(hComm,SendData,BS,&lrc,NULL);//送出数据         
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button7KeyPress(TObject *Sender, char &Key)
{
String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if(hComm==0)
{
      MessageBox(0,"通信端口未打开!!","Open Error",MB_OK);
      return;
}
Temp="E";   //定义发送的字符串
SendData=Temp.c_str();//字符串转换
//取的发送的字符串数
BS=Temp.Length();
//BS=StrLen(SendData);
//实际发送动作
WriteFile(hComm,SendData,BS,&lrc,NULL);//送出数据      
}
//---------------------------------------------------------------------------


BS=Temp.Length();这里,用   BS=StrLen(SendData);就报错,我认为这两句应该是一样的功能,请教高手点下

stream966 发表于 2011-9-6 15:50:13

参数格式函数不支持,查下帮助看看了
页: [1]
查看完整版本: C++builder串口报错