如何用波兰语发送短信,例如使用以下文本“Cześć”,其中字符来自 GSM 字母表之外?我有一个带有 SIMCOM 的 SIM800L 模块的 TTGO T-Call 板。我尝试过使用各种 AT 命令,但没有任何效果。有没有人遇到过类似的问题?非常感谢您的帮助!
问问题
42 次
2 回答
0
根据 GSM 规范 3GP TS 127.007,声明要发送 UCS2 字符(16 位 unicode)的魔术命令是:
AT+CSCS="UCS2"
从那时起,您必须发送 unicode 字符的十六进制值。这个例子说发送Abc
你实际上发送004100620063。所以发送Cześć
它是0043007a0065015b0107
于 2022-01-20T17:00:08.380 回答
-1
这是TTGO T-CALL 1.3/1.4 SIM800L的工作代码
#define SIM800L_RX 27
#define SIM800L_TX 26
#define SIM800L_PWRKEY 4
#define SIM800L_RST 5
#define SIM800L_POWER 23
void Send_AT(String command) {
Serial.println("AT: " + command);
Serial2.println(command);
long timer = millis();
while (timer + 3000 > millis()) {
while (Serial2.available()) {
Serial.write(Serial2.read());
}
}
Serial.println();
}
void setup() {
pinMode(SIM800L_POWER, OUTPUT);
digitalWrite(SIM800L_POWER, HIGH);
Serial.begin(115200);
Serial2.begin(9600, SERIAL_8N1, SIM800L_TX, SIM800L_RX);
delay(1000);
Serial.println("--- Loading Firmware ---\n");
delay(5000);
Serial.println("--- (C) 2022 by Dawid Irzyk ---");
Serial.println("");
while (Serial2.available()) {
Serial.write(Serial2.read());
}
}
void SendMessage()
{
Serial2.print("ATZ\r\n");
delay(2000);
Serial2.print("AT+CSCS=\"HEX\"\r\n");
delay(2000);
Serial2.print("AT+CSMP=17,168,0,8\r\n");
delay(2000);
Serial2.print("AT+CMGF=1\r\n");
delay(2000);
Serial2.print("AT+CMGS=\"+48123123123\"\r\n");
delay(2000);
Serial2.print("0043007a0065015b0107");
delay(2000);
Serial2.println((char)26);
}
void loop() {
SendMessage();
while (true) {
delay(1000);
}
}
于 2022-01-20T17:19:08.503 回答