-2

如何用波兰语发送短信,例如使用以下文本“Cześć”,其中字符来自 GSM 字母表之外?我有一个带有 SIMCOM 的 SIM800L 模块的 TTGO T-Call 板。我尝试过使用各种 AT 命令,但没有任何效果。有没有人遇到过类似的问题?非常感谢您的帮助!

4

2 回答 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 回答