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

关于sms的问题

尚未結案
wynj_6
一般會員


發表:11
回覆:5
積分:3
註冊:2004-11-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-07 13:36:29 IP:61.155.xxx.xxx 未訂閱
String mode; AnsiString t="/r";//13 AnsiString n="\n";//10 AnsiString sy="\"";//34双引号 AnsiString z="\032";//Ctrl z0x1a __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::Button1Click(TObject *Sender) { MSComm1->PortOpen=true; if(MSComm1->PortOpen==true) { ShowMessage("连接成功"); mode="AT CMGF=0"; MSComm1->Output=mode t; }else { ShowMessage("连接失败"); } } void __fastcall TForm1::BitBtn1Click(TObject *Sender) { AnsiString ReadMsg; ReadMsg="AT CMGR=1";//读取短信息,命令. MSComm1->Output=ReadMsg t;//送出命令. Edit1->Text//如何将信息内容显示到Edit1->Text上? } 再次感谢高手的指导!!
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-07 13:55:38 IP:203.204.xxx.xxx 未訂閱
Hi~wynj_6 由你的例子可直接給個變通的方法~參考看看
引言: String mode; AnsiString t="/r";//13 AnsiString n="\n";//10 AnsiString sy="\"";//34双引号 AnsiString z="\032";//Ctrl z0x1a String msg; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::Button1Click(TObject *Sender) { MSComm1->PortOpen=true; if(MSComm1->PortOpen==true) { msg="连接成功"; ShowMessage(msg); mode="AT CMGF=0"; MSComm1->Output=mode t; }else { msg="连接失败"; ShowMessage(msg); } } void __fastcall TForm1::BitBtn1Click(TObject *Sender) { AnsiString ReadMsg; ReadMsg="AT CMGR=1";//读取短信息,命令. MSComm1->Output=ReadMsg t;//送出命令. Edit1->Text=msg; } 再次感谢高手的指导!!
wynj_6
一般會員


發表:11
回覆:5
積分:3
註冊:2004-11-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-07 15:22:04 IP:61.155.xxx.xxx 未訂閱
引言: Hi~wynj_6 由你的例子可直接給個變通的方法~參考看看
引言: String mode; AnsiString t="/r";//13 AnsiString n="\n";//10 AnsiString sy="\"";//34双引号 AnsiString z="\032";//Ctrl z0x1a String msg; __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } void __fastcall TForm1::Button1Click(TObject *Sender) { MSComm1->PortOpen=true; if(MSComm1->PortOpen==true) { msg="连接成功"; ShowMessage(msg); mode="AT CMGF=0"; MSComm1->Output=mode t; }else { msg="连接失败"; ShowMessage(msg); } } void __fastcall TForm1::BitBtn1Click(TObject *Sender) { AnsiString ReadMsg; ReadMsg="AT CMGR=1";//读取短信息,命令. MSComm1->Output=ReadMsg t;//送出命令. Edit1->Text=msg; } 再次感谢高手的指导!!
谢谢您!可按您那样写,Edit1->Text只显示“连接成功或失败”.可能是我没表达的清楚。Edit1->Text里应该是要读短信息内容(pdu的编码).请高手指导.
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-07 16:35:03 IP:203.204.xxx.xxx 未訂閱
引言: 谢谢您!可按您那样写,Edit1->Text只显示“连接成功或失败”.可能是我没表达的清楚。Edit1->Text里应该是要读短信息内容(pdu的编码).请高手指导.
喔~抱歉!你要的是SMS轉碼嗎~ 那或許可參考此篇大作~ http://delphi.ktop.com.tw/topic.php?topic_id=19968
wynj_6
一般會員


發表:11
回覆:5
積分:3
註冊:2004-11-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-08 09:12:13 IP:202.102.xxx.xxx 未訂閱
引言:
引言: 谢谢您!可按您那样写,Edit1->Text只显示“连接成功或失败”.可能是我没表达的清楚。Edit1->Text里应该是要读短信息内容(pdu的编码).请高手指导.
喔~抱歉!你要的是SMS轉碼嗎~ 那或許可參考此篇大作~ http://delphi.ktop.com.tw/topic.php?topic_id=19968 AnsiString ReadMsg; ReadMsg="AT CMGR=1";//读取短信息,命令. MSComm1->Output=ReadMsg t;//送出命令. 请问,如何把读取的短消息赋给一个变量.变量类型是什么? 请指导小弟一下,谢谢!!!
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-08 09:50:06 IP:203.204.xxx.xxx 未訂閱
引言: AnsiString ReadMsg; ReadMsg="AT CMGR=1";//读取短信息,命令. MSComm1->Output=ReadMsg t;//送出命令. 请问,如何把读取的短消息赋给一个变量.变量类型是什么? 请指导小弟一下,谢谢!!!
從上面連結的說明~你要做的即是對ReadMsg做編碼的動作也就是在以下兩段函式內的處理方法~將你的ReadMsg依中英文分別傳入處理又或改寫為單一函式在涵式內進行判斷為中英文 String __stdcall EncodeEnglish(String InputStr); String EncodeChinese(String InputStr);
wynj_6
一般會員


發表:11
回覆:5
積分:3
註冊:2004-11-20

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-08 10:38:55 IP:202.102.xxx.xxx 未訂閱
引言:
引言: AnsiString ReadMsg; ReadMsg="AT CMGR=1";//读取短信息,命令. MSComm1->Output=ReadMsg t;//送出命令. 请问,如何把读取的短消息赋给一个变量.变量类型是什么? 请指导小弟一下,谢谢!!!
從上面連結的說明~你要做的即是對ReadMsg做編碼的動作也就是在以下兩段函式內的處理方法~將你的ReadMsg依中英文分別傳入處理又或改寫為單一函式在涵式內進行判斷為中英文 String __stdcall EncodeEnglish(String InputStr); String EncodeChinese(String InputStr); 我是一个新手,只有先将pdu码赋给InputStr,这样函数才可进行处理,并将其转为英文或中文。 ReadMsg="AT CMGR=1";//读取短信息,命令. MSComm1->Output=ReadMsg t;//送出命令. InputStr的值应如何赋给呢? InputStr=MSComm1->Input;//我这样写是正确的吗?但是总是报'读MSComm1设备错误'.不知怎么解决?? 谢谢!!
發表人 - wynj_6 於 2005/01/08 10:40:20 發表人 - wynj_6 於 2005/01/08 10:44:47
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-08 13:26:20 IP:203.204.xxx.xxx 未訂閱
引言: MSComm1->Output=ReadMsg t;//送出命令. InputStr的值应如何赋给呢? InputStr=MSComm1->Input;//我这样写是正确的吗?但是总是报'读MSComm1设备错误'.不知怎么解决?? 谢谢!!
如果你再使用MSComm時用PortOpen打開一個不存在的Port即會產生此錯誤訊息,且必須在打開port前設置CommPort屬性~請檢查你的code
wynj_6
一般會員


發表:11
回覆:5
積分:3
註冊:2004-11-20

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-08 15:39:02 IP:202.102.xxx.xxx 未訂閱
引言:
引言: MSComm1->Output=ReadMsg t;//送出命令. InputStr的值应如何赋给呢? InputStr=MSComm1->Input;//我这样写是正确的吗?但是总是报'读MSComm1设备错误'.不知怎么解决?? 谢谢!!
如果你再使用MSComm時用PortOpen打開一個不存在的Port即會產生此錯誤訊息,且必須在打開port前設置CommPort屬性~請檢查你的code 不好意思,还想问一下高手 ReadMsg="AT CMGR=1";//读取短信息,命令. MSComm1->Output=ReadMsg t;//送出命令. 执行完以上两句,结果应该在那??? 我想把结果赋给Edit1->Text,应该如何写,谢谢!!
rogan321
高階會員


發表:21
回覆:307
積分:200
註冊:2003-05-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-08 23:02:26 IP:203.204.xxx.xxx 未訂閱
Hi~wynj_6 Input和Output都屬於OleVariant類型,也就是Ole,所以接收傳送時要轉為Ole類型,寫個ole和string之間的處理方式做例子~希望你可參考看看改寫成你要的處理方法~若要進行編碼再請增加處理即可  
 
void __fastcall TForm1::Button1Click(TObject *Sender) 
{ //傳送Memo的string字串
  MSComm1->Output=StringToOleStr(Memo1->Text);//String轉為Ole
}
//RThreshold屬性設定必須大於0接收資料時才會產生OnComm event
void __fastcall TForm1::MSComm1Comm(TObject *Sender)
{
  String str;
  OleVariant s; 
 if(MSComm1->CommEvent==comEvReceive)//buffer中是否接收到字串
 {
  if(MSComm1->InBufferCount)// 
  {
   s=MSComm1->Input;//接收資料給Ole變數
   str=s.AsType(varString); //轉成string給str
   Memo2->Text=Memo1->Text str;//顯示在Memo2
  }
 } 
}
總而言,你要將結果改給vcl元件必須將其從ole型態轉為string型態,反之亦然
系統時間:2024-05-20 22:21:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!