全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1803
推到 Plurk!
推到 Facebook!

如何改成自動傳輸

 
quentin520
一般會員


發表:15
回覆:13
積分:5
註冊:2006-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-01-26 15:02:19 IP:59.114.xxx.xxx 訂閱
void __fastcall TForm1::Button7Click(TObject *Sender)
{
char *ComNo;
DCB dcb;
String Temp;
//取得欲開啟的通訊埠
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);
return;
}
//將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);
return;
}
Timer4->Enabled = True;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer4Timer(TObject *Sender)
{
String Temp;
char inbuff[1024];
DWORD nBytesRead, dwEvent, dwError;
COMSTAT cs;
//取得狀態
ClearCommError(hComm,&dwError,&cs);
if(cs.cbInQue == 0)
// 資料是否大於我們所準備的Buffer
if (cs.cbInQue > sizeof(inbuff))
{
PurgeComm(hComm, PURGE_RXCLEAR); // 清除COM 資料
return;
}
ReadFile(hComm, inbuff,cs.cbInQue,&nBytesRead,NULL); // 接收COM 的資料
//轉移資料到變數中
// 將資料顯示於Memo1 上
mReceive->Text =inbuff;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::mReceiveKeyPress(TObject *Sender, char &Key)
{
String Temp;
char *SendData;
int ln;
unsigned long lrc,BS;
if (Key!=13) return;
if (hComm==0) return; //檢查Handle值
Temp = Memo1->Text;//取得傳送的字串
SendData = Temp.c_str(); //字串轉換
//取得傳送的字串數
BS = Temp.Length();
//BS = StrLen(SendData); //也可以使用此種方式取得字串長度
//實際的傳送動作
WriteFile(hComm,SendData,BS, &lrc,NULL); // 送出資料

上面是我整個程式!但傳送資料需要按ENTER才能傳出!那要如何改成自動傳送呢?
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-27 22:20:42 IP:60.248.xxx.xxx 訂閱
  又是Timer,勸你寫通訊不要使用Timer
你的問題可用Thread解決
quentin520
一般會員


發表:15
回覆:13
積分:5
註冊:2006-12-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-28 02:47:13 IP:220.131.xxx.xxx 訂閱
不好意思!可以再說清楚一點嗎?
系統時間:2024-04-26 11:57:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!