2017-12-01 21 views
1

GSMデバイス/モデムを使用してメッセージを送受信するためにC#.Netを使用する既存のデスクトップアプリケーションがあります。すべては問題ありませんが、今私はいくつかの問題に直面しています:ATコマンドを使用してGSMデバイスからUnicodeメッセージを送信する方法

1 - メッセージに160文字以上を送信できません。

2 - 私はUnicodeメッセージを送信できません(私の言語はベンガル語です)。私はすでに16進数に変換しようとしましたが、別の言語を送信しています。

これは私がこれまで試したものです:すべての

port.WriteLine("AT+CSCS=\"UCS2\"\n"); 
Thread.Sleep(100); 
port.WriteLine("AT+CMGF=1"+Environment.NewLine); 
Thread.Sleep(100); 
port.WriteLine("AT+CMGS=\""+number+"\""); 
Thread.Sleep(100); 
port.WriteLine(message+char.ConvertFromUtf32(26)+Environment.NewLine); 
Thread.Sleep(100); 
port.Write(new byte[]{26},0,1); 
Thread.Sleep(100); 

答えて

0

まず、あなたはnever, never, never, never, never, never, never, never, never, never, ever use Thread.Sleep like that必要があります!また、AT+CMGSの場合は、モデムから受信可能なペイロード応答を正しく待つ必要があります(this answerの最初の部分を参照)。


SMSサイズに関しては、160文字がGSMネットワークの制限です。テキストを分割して受信側の携帯電話に透過的に連結された複数のメッセージを送信することで、1つのメッセージのように見えるように、より大きなメッセージを「事実上」送信することが可能です。これはmulti-part smsと呼ばれます。

テキストモードで複数の部分のメッセージを送信することはできません。PDUモードを使用する必要があります。


あなたがAT+CSCS="UCS2"を実行した後、すべての単一の文字列パラメータはswitching to a different character encoding with AT+CSCS含め、その後、上からそのようにエンコードする必要があります。あなたの場合、これは<da>引数にAT+CMGSに適用されます。

関連する問題