|
没有写过上位机,上午没事照着一个从坛里下的PDF的教程写了一点。那个PDF是扫描版的,无法复制,所以就调了一下,有需要的朋友可以直接复制了。只实现了简单的发送盒接收功能。
(原文件名:未命名.JPG)
BCB的源文件。
点击此处下载 ourdev_384398.rar(文件大小:624K) (原文件名:com.rar)
主要代码:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SUIButton"
#pragma link "SUIForm"
#pragma link "SUIGroupBox"
#pragma link "SUIImagePanel"
#pragma link "SUIMemo"
#pragma link "SUIRadioGroup"
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE hComm;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::suitempbtOpencomClick(TObject *Sender)
{
char *ComNo;
DCB dcb;
String Temp;
Temp = "COM" + IntToStr(RadioGroupComselect->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_9600;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
if(!SetCommState(hComm, &dcb))
{
MessageBox(0, "通信设置错误" ,"Set Error", MB_OK);
CloseHandle(hComm);
return;
}
Shape1->Brush->Color = clRed;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::suitempbtExitClick(TObject *Sender)
{
if(hComm != INVALID_HANDLE_VALUE)
CloseHandle(hComm);
exit(EXIT_SUCCESS);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::suitempbtTransmitClick(TObject *Sender)
{
String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if(hComm == 0)
return;
Temp = MemoSend->Text;
SendData = Temp.c_str();
BS = Temp.Length();
WriteFile(hComm,SendData,BS,&lrc,NULL);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::suitempbtReceiveClick(TObject *Sender)
{
String Temp;
char inbuff[1024];
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';
MemoReceive->Text = inbuff;
}
//--------------------------------------------------------------------------- |
|