如何用波兰文发送短信,例如使用以下文字"Cześć",其中字符来自GSM字母表之外?我有一个TTGO T呼叫板,它有一个来自SIMCOM的SIM800L模块.我试过使用各种AT命令,但都没有用。有没有人遇到过类似的问题?非常感谢您的帮助!
发布于 2022-01-20 17:00:08
根据GSM规范3GP TS 127.007,声明要发送UCS2字符(16位unicode)的神奇命令是:
AT+CSCS="UCS2"从那时起,您必须发送unicode字符的十六进制值。这个例子说,要发送Abc,您实际上发送了004100620063。所以要发送Cześć,它将是0043007a0065015b0107
发布于 2022-01-20 17:19:08
这是TTGO T调用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);
}
}https://stackoverflow.com/questions/70789914
复制相似问题