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

關於 MSCOMM->CommPort 的問題

答題得分者是:aftcast
2007
中階會員


發表:54
回覆:90
積分:98
註冊:2008-08-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-11-14 14:24:05 IP:220.132.xxx.xxx 未訂閱
各位大大好!!

MSCOMM 元件的 CommPort 值,最大可以支援到多少??

我測怎麼只到 十六,是否有辦法~~修改,使其變大??

謝謝

http://delphi.ktop.com.tw/download.php?download=upload/491d1985cc0ad_MSComm.jpg
附加檔案:491d1985cc0ad_MSComm.jpg
編輯記錄
2007 重新編輯於 2008-11-14 14:24:36, 註解 無‧
herbert2
尊榮會員


發表:58
回覆:632
積分:878
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-11-14 15:10:05 IP:211.72.xxx.xxx 訂閱
您一次要同時用到 16 個以上的 CommPort ?
以前 PC 上通常最多也才四個 CommPort 呀!
GrandRURU
站務副站長


發表:234
回覆:1651
積分:1742
註冊:2005-06-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-11-14 17:33:18 IP:203.75.xxx.xxx 未訂閱
是的
MSComm最大只有16個,這是它的限制。

請改用別的吧
nrComm感覺還不賴的說
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-11-14 20:11:17 IP:60.248.xxx.xxx 訂閱
建議若要使用任意數值,就直接使用win32 api中的createfile就可以 
可參考以下我曾寫過的部份程式碼

[code cpp]
DCB dcbCommPort;
char *ptr = NULL;
AnsiString comport;

// ShowMessage(Now().FormatString("mmdd"));
// Memo2->Lines->LoadFromFile("c:\\phone.txt");

// OPEN THE COMM PORT.
comport = "\\\\.\\COM" Com->Text;
ptr = comport.c_str();
if(hComm)
{
PurgeComm(hComm, PURGE_RXABORT);
SetCommTimeouts(hComm, &ctmoOld);
CloseHandle(hComm);
}
hComm = ::CreateFile(ptr,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE|FILE_SHARE_READ,
0,
OPEN_EXISTING,
0,
0);
// IF THE PORT CANNOT BE OPENED, BAIL OUT.
if(hComm == INVALID_HANDLE_VALUE)
{
ShowMessage("Can't open Com port!");
return;
}
[/code]
------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2008-11-14 20:12:55, 註解 無‧
2007
中階會員


發表:54
回覆:90
積分:98
註冊:2008-08-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-11-14 22:32:07 IP:218.170.xxx.xxx 未訂閱

謝謝各位大大的回應!!

提出這個問題,主要是想得到各位大大的確認及是否有修改的方法。

如果能小幅修改當然是最好的,

最壞的打算就是更換元件或以createfile的方式,只是要動的東西比較多且要在測一下。

不過還是謝謝各位大大的回應。

得分就給提供程式碼的大大囉!!


===================引 用 aftcast 文 章===================
建議若要使用任意數值,就直接使用win32 api中的createfile就可以
可參考以下我曾寫過的部份程式碼

[code cpp]
DCB dcbCommPort;
char *ptr = NULL;
AnsiString comport;

// ShowMessage(Now().FormatString("mmdd"));
// Memo2->Lines->LoadFromFile("c:\\phone.txt");

// OPEN THE COMM PORT.
comport = "\\\\.\\COM" Com->Text;
ptr = comport.c_str();
if(hComm)
{
PurgeComm(hComm, PURGE_RXABORT);
SetCommTimeouts(hComm, &ctmoOld);
CloseHandle(hComm);
}
hComm = ::CreateFile(ptr,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_WRITE|FILE_SHARE_READ,
0,
OPEN_EXISTING,
0,
0);
// IF THE PORT CANNOT BE OPENED, BAIL OUT.
if(hComm == INVALID_HANDLE_VALUE)
{
ShowMessage("Can't open Com port!");
return;
}
[/code]
系統時間:2017-10-23 23:18:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!