niveacsy
一般會員
發表:1 回覆:2 積分:0 註冊:2005-08-03
發送簡訊給我
|
各位大大你們好:
小弟我碰到一個問題, BCB程式寫好可是執行後command一直送不過去, 不知道哪裡出了問題, 以下是我的程式內容:
//------------------------------------------------------------------- #include
#pragma hdrstop #include "RS.h"
//-------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE RS232;
//------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------- void __fastcall TForm1::ButtonTestClick(TObject *Sender)
{
RS232 = CreateFile("Com2",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if(RS232)
{
ShowMessage("Connect Success!");
}
else
{
ShowMessage("Connect Fail!");
}
}
//------------------------------------------------------------------- void __fastcall TForm1::ButtonCloseClick(TObject *Sender)
{
if(RS232)
{
CloseHandle(RS232);
ShowMessage("Disconnect!");
Close();
}
else
{
ShowMessage("No Connect!!");
Close();
}
}
//------------------------------------------------------------------- void __fastcall TForm1::ButtonSendClick(TObject *Sender)
{
if((RS232) && (Editcomm->Text != ""))
{
DCB dcb;
ZeroMemory(&dcb, sizeof(dcb));
dcb.DCBlength = sizeof(dcb);
dcb.BaudRate = 38400;
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
if(SetCommState(RS232, &dcb))
{
DWORD ByteCount;
WriteFile(RS232,
Editcomm->Text.c_str(),
strlen(Editcomm->Text.c_str()),
&ByteCount,
NULL);
}
else
{
ShowMessage("Connect Error!");
}
Editcomm->Text = "";
}
else
{
ShowMessage("Error!!");
}
}
//------------------------------------------------------------------- 他要求command為ASCII格式, 且後面要加上CR LF
可是我將command用STOP CRLF(Editcomm->Text)傳過去都沒有反應
不知道哪裡有問題
|
Fm
初階會員
發表:19 回覆:66 積分:37 註冊:2003-10-15
發送簡訊給我
|
試試
String str="STOP" '\x13' '\x10';
char *SendData=str.c_str();
DWORD lrc=0;
DWORD BS=str.Length();
WriteFile(Rs232,SendData,BS,&lrc,NULL);
//新手上路,請多包涵。
/*青青子矜,悠悠我心。但為君故,沈吟至今。*/
|
niveacsy
一般會員
發表:1 回覆:2 積分:0 註冊:2005-08-03
發送簡訊給我
|
今天又試了一下, 發現還是無法送Command...
於是我用VB直接用MSComm做, 還是沒辦法傳送指令.
因此我將VB這程式送人另外的Command去控制另一台儀器卻順利通過了.
接著改回BCB來做也順利傳送了...可是這另一儀器本身有附約略的sample程式
所以不知道是否我指令在送到原本那台儀器時方式送錯, 造成無法控制
-------
Command input in ASCII code
Each Command has a command name, parameters, and a delimiter (delimiter = CR LF)
command name must be in upper case
command and parameter and delimiter用space分隔 Command sample: STOP delimiter (這個command沒有parameters)
-------
在這樣的command下我該如何寫入儀器呢? 發表人 - niveacsy 於 2005/08/09 11:56:39
|
niveacsy
一般會員
發表:1 回覆:2 積分:0 註冊:2005-08-03
發送簡訊給我
|
終於可以傳送command了...
原因出在於RS232的線...
長像一模一樣, 實際上內函完全不同阿...
對於我這初學者來說, 真的是上了一門很重要的課...
不過還是謝謝各位, 也謝謝FM大大的建議...^^
|