線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3423
推到 Plurk!
推到 Facebook!

RS232傳輸問題

答題得分者是:李國維
hank73317
一般會員


發表:20
回覆:47
積分:13
註冊:2008-12-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-03-20 10:56:29 IP:122.146.xxx.xxx 訂閱
各位高手,請問一下,我去做RS232的傳輸,不過都不能正確的傳回我想傳的字串,想請問一下我的code要如何改才對呢
謝謝~~~~
[code cpp]
void __fastcall TForm1::Button1Click(TObject *Sender)
{
const int BUFSIZE = 4096;
char chBuffer[BUFSIZE];
memcpy(chBuffer,"Test",4);
DWORD dwWritenSize = 0;
WriteFile("COM3","T",4,&dwWritenSize,NULL);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
char RS232RXBuf[128];
DWORD dwWritenSize = 0;
ReadFile("COM3",RS232RXBuf,4,&dwWritenSize,NULL);
Edit1->Text=RS232RXBuf[0];
}

[/code]
taishyang
站務副站長


發表:377
回覆:5486
積分:4552
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-03-20 11:01:46 IP:118.169.xxx.xxx 訂閱
RS232資料傳輸的問題站上有很多討論文章以及程式
您搜尋過了嗎?

編輯記錄
taishyang 重新編輯於 2009-03-20 11:02:29, 註解 無‧
hank73317
一般會員


發表:20
回覆:47
積分:13
註冊:2008-12-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-03-20 11:07:33 IP:122.146.xxx.xxx 訂閱
有的,所以我寫了一個像這樣的code來測試,步過有點問題,所以想請高手幫我看看一下~~~
taishyang
站務副站長


發表:377
回覆:5486
積分:4552
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-03-20 11:27:26 IP:118.169.xxx.xxx 訂閱
沒透過CreateFile取得COM port的handle,沒做Baudrate,同位檢查...等的相關設定
你要怎麼Read/WriteFile?
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-03-20 12:32:41 IP:61.67.xxx.xxx 訂閱
COM Port開啟關閉簡易程式碼
請參考下列程式碼
[code cpp]
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE RS232;
DCB dcb;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AnsiString temp ="COM1";
RS232 = CreateFile(temp.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
if (RS232 == INVALID_HANDLE_VALUE)
{
MessageBox(0, "開啟錯誤", "Open error", MB_OK);
return;
}
else Memo1->Lines->Add(temp ": 開啟成功");
GetCommState(RS232, &dcb);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = 0; //NOPARITY
dcb.StopBits = 0; //ONESTOPBIT
SetCommState(RS232, &dcb);

if (!SetCommState(RS232, &dcb))
{
MessageBox(0, "設定錯誤", "Set error", MB_OK);
CloseHandle(RS232);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if (RS232 != INVALID_HANDLE_VALUE) CloseHandle(RS232);
}
//---------------------------------------------------------------------------

[/code]

系統時間:2017-12-16 15:22:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!