現在在做一個專案,PC機界面用BCB6.0開發做一個上位機界面,想利用RS232進行通信,從PC機界面給其發指令進行控制下位機,下位機是一臺溫度控制器,PC機輸入溫度,下位機達到輸入值,控制元件用的是第三方TYbCommDevice控制元件,請問一下怎么將指令送達下位機,具體要用到什么控制元件或者函式。?????大神們幫忙一下吧。
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
這里比較全
http://www.cppfans.com/vcl/victorcomm/yb_comm_history.asp
uj5u.com熱心網友回復:
是DLL檔案嗎?
uj5u.com熱心網友回復:
使用pcomm。好用些
uj5u.com熱心網友回復:
參考 3 樓 nibabap5 的回復: 是DLL檔案嗎?
不是,要給下位機發送自帶指令
uj5u.com熱心網友回復:
BCB6.0串口通信我用的是ApdComPort控制元件,很好用。拖一個控制元件到表單,然后先打開串口:
ApdComPort1->Baud = 9600; //波特率
ApdComPort1->ComNumber =1; //串口號
ApdComPort1->Open = true; //打開串口
發送資料:
char SendBuffer[10];
SendBuffer[0]=0xA5;
SendBuffer[1]=0x5A;
SendBuffer[2]=0x04;
SendBuffer[3]=0x80;
SendBuffer[4]=0x03;
SendBuffer[5]=0x00;
SendBuffer[6]=0x01;
ApdComPort1->PutBlock(SendBuffer,7);
接收資料用控制元件的TriggerAvail事件:
AnsiString Value;
void __fastcall TWaitForm::ApdComPort51TriggerAvail(TObject *CP,
WORD Count)
{
char Ch;
for(int I=1;I<Count+1;I++)
{
Ch = ApdComPort1->GetChar();
Value = Value+Ch;
}
}
uj5u.com熱心網友回復:
參考 6 樓 wx384479289 的回復: BCB6.0串口通信我用的是ApdComPort控制元件,很好用。拖一個控制元件到表單,然后先打開串口:
ApdComPort1->Baud = 9600; //波特率
ApdComPort1->ComNumber =1; //串口號
ApdComPort1->Open = true; //打開串口
發送資料:
char SendBuffer[10];
SendBuffer[0]=0xA5;
SendBuffer[1]=0x5A;
SendBuffer[2]=0x04;
SendBuffer[3]=0x80;
SendBuffer[4]=0x03;
SendBuffer[5]=0x00;
SendBuffer[6]=0x01;
ApdComPort1->PutBlock(SendBuffer,7);
接收資料用控制元件的TriggerAvail事件:
AnsiString Value;
void __fastcall TWaitForm::ApdComPort51TriggerAvail(TObject *CP,
WORD Count)
{
char Ch;
for(int I=1;I<Count+1;I++)
{
Ch = ApdComPort1->GetChar();
Value = Value+Ch;
}
}
參考 6 樓 wx384479289 的回復: BCB6.0串口通信我用的是ApdComPort控制元件,很好用。拖一個控制元件到表單,然后先打開串口:
ApdComPort1->Baud = 9600; //波特率
ApdComPort1->ComNumber =1; //串口號
ApdComPort1->Open = true; //打開串口
發送資料:
char SendBuffer[10];
SendBuffer[0]=0xA5;
SendBuffer[1]=0x5A;
SendBuffer[2]=0x04;
SendBuffer[3]=0x80;
SendBuffer[4]=0x03;
SendBuffer[5]=0x00;
SendBuffer[6]=0x01;
ApdComPort1->PutBlock(SendBuffer,7);
接收資料用控制元件的TriggerAvail事件:
AnsiString Value;
void __fastcall TWaitForm::ApdComPort51TriggerAvail(TObject *CP,
WORD Count)
{
char Ch;
for(int I=1;I<Count+1;I++)
{
Ch = ApdComPort1->GetChar();
Value = Value+Ch;
}
}
發送的命令不是字串,是一些像s=350,hl=100之類的命令,如何用串口寫入?
uj5u.com熱心網友回復:
溫度控制器有說明嗎,有沒有參考示例,能用串口除錯工具發送的命令,就可以通過軟體直接向串口發送,一般都是16進制的組合命令。s=350,hl=100這樣的命令不像是串口直接發的啊,是不是通過介面發送的。
uj5u.com熱心網友回復:
參考 8 樓 wx384479289 的回復: 溫度控制器有說明嗎,有沒有參考示例,能用串口除錯工具發送的命令,就可以通過軟體直接向串口發送,一般都是16進制的組合命令。s=350,hl=100這樣的命令不像是串口直接發的啊,是不是通過介面發送的。
剛查了一下,是介面命令,(interface command),該如何處理啊?
uj5u.com熱心網友回復:
參考 8 樓 wx384479289 的回復: 溫度控制器有說明嗎,有沒有參考示例,能用串口除錯工具發送的命令,就可以通過軟體直接向串口發送,一般都是16進制的組合命令。s=350,hl=100這樣的命令不像是串口直接發的啊,是不是通過介面發送的。
沒有什么太多說明,只給出了一系列介面命令,我想通過串口讀進去,控制下位機,可行否?
uj5u.com熱心網友回復:
參考 8 樓 wx384479289 的回復: 溫度控制器有說明嗎,有沒有參考示例,能用串口除錯工具發送的命令,就可以通過軟體直接向串口發送,一般都是16進制的組合命令。s=350,hl=100這樣的命令不像是串口直接發的啊,是不是通過介面發送的。
這些介面命令我用串口除錯助手好像是無法發送的,不知道用串口如何處理
uj5u.com熱心網友回復:
有介面的話,直接呼叫介面就可以了,不用直接向串口發命令的,介面都已經做好了,直接呼叫介面,添加引數就行了吧。
uj5u.com熱心網友回復:
參考 12 樓 wx384479289 的回復: 有介面的話,直接呼叫介面就可以了,不用直接向串口發命令的,介面都已經做好了,直接呼叫介面,添加引數就行了吧。
什么意思?什么叫有介面?怎樣直接呼叫介面呢? 謝謝了
uj5u.com熱心網友回復:
借樓主帖子一用,我也是用c++builder做上位機,但是遇到了問題一直沒有結解決,現在軟體貌似還出了問題,望好心人幫下忙
另外上次有做,做到一半停下了,遇到的串口問題,望大神幫下----------原帖在百度貼吧終于能找到個可以問bcb的地方了啦_c++builder吧_百度貼吧
http://tieba.baidu.com/p/3888311789
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/94381.html
標籤:ActiveX/COM/DCOM
上一篇:利用libssh2開發sftp檔案傳輸客戶端 libssh2_sftp_read函式阻塞,求解決辦法
下一篇:如何快速Socket訪問/通訊多個設備