首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

C++ build 串口通信解决方法

2012-03-14 
C++ build 串口通信void writeSerialPort(String data,DWORD time){char *SendDataDCB dcbchar *ComNoS

C++ build 串口通信
void writeSerialPort(String data,DWORD time){
  char *SendData;
  DCB dcb;
  char *ComNo;
  String temp="COM1";
  ComNo = temp.c_str();
  HANDLE 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 = 1200;
  dcb.ByteSize = 8;
  //dcb.fParity = 1;
  dcb.Parity = 2;
  dcb.StopBits = 0;
  if(!SetCommState(hComm,&dcb)){
  MessageBox(0,"通信端口设置错误!","Set Error",MB_OK);
  CloseHandle(hComm);
  return;
  }
  unsigned long lrc,BS;
  SendData = data.c_str();
  BS = data.Length();
  WriteFile(hComm,SendData,BS,&lrc,NULL);
  Sleep(time);
  DWORD nBytesRead,dwEvent,dwError;
  COMSTAT cs;
  ClearCommError(hComm,&dwError,&cs);
  if(cs.cbInQue>sizeof(inbuff)){
  PurgeComm(hComm,PURGE_RXCLEAR);
  return;
  }
  ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL);
  inbuff[cs.cbInQue]='\0';
  CloseHandle(hComm);
}

我想和一个设备通信,但是设备就是接受不了,但是用JAVA可以,串口设置应该没有错!

[解决办法]
very good i like
[解决办法]
调试跟踪,着重看下dcb和hComm的值
[解决办法]
用个串口调试软件,看看你发了些什么东西,既然用其他得可以就是你写得代码有问题
[解决办法]
接个自环头自己发自己收跟踪看看
[解决办法]
char *chrTemp = new char[ FDeviceName.Length() + 8 ];
strcpy( chrTemp , ("\\\\.\\"+FDeviceName).c_str());
//end
if ((FHandle = CreateFile(chrTemp,
GENERIC_READ | GENERIC_WRITE, 0, NULL,OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL))==(HANDLE)-1)
FConnected = false ;
else
{
FConnected = true ;
if (GetFileType(FHandle) != FILE_TYPE_CHAR)
{
DestroyHandle();
} else SetCommMask(FHandle, 511);
}


这是我在用的代码,应该是strcpy( chrTemp , ("\\\\.\\"+FDeviceName).c_str());

[解决办法]
如果有需要的话可以Mail我,给你我写的类
[解决办法]
是不是COM port坏了?
[解决办法]
貌似有点问题

热点排行