function sendPDUSms($phone_num, $sms_text) { // 短信中心号码 $smsc = SMS_SMSC; // $cmd_log = $smsc; // $cmd_log .= $sms_text; // 短信最大长度70个汉字,Unicode表示需要280个字节 $max_len = 280; $invert_smsc = StringHelper::InvertNumbers($smsc); $len = 1; $s = chr(13); $phone_num = "86" . $phone_num; $sms_text = $sms_text; $pdu_text = StringHelper::hex2str(StringHelper::gb2unicode($sms_text)); // $cmd_log .= StringHelper::gb2unicode($sms_text); $invert_msisdn = StringHelper::InvertNumbers($phone_num); // 拆分发送超过70汉字的短信(todo: 没有判断全英文的情况) $pdu_len = strlen($pdu_text); if ($pdu_len > $max_len) { $pdu_text1 = substr($pdu_text, 0, $max_len); $pdu_text = substr($pdu_text, $max_len, $pdu_len - $max_len); } else { $pdu_text1 = $pdu_text; $pdu_text = ""; } $pdu_len1 = sprintf("%02X", strlen($pdu_text1) / 2); $pdu_text1 = $pdu_len1 . $pdu_text1; $pdu_text1 = "11000D91" . $invert_msisdn . "000800" . $pdu_text1; $atcmd = "AT+CMGS=" . sprintf("%d", strlen($pdu_text1) / 2) . chr(13); $l = strlen($atcmd); // $cmd = NOKIA_QD_CMGF_AT_COMMAND."0".chr(13); // ser_write($cmd); // $cmd_log .= $cmd; ser_write($atcmd); $cmd_log = $atcmd; ser_write(" " . chr(26) . chr(13)); $pdu_text1 = "0891" . $invert_smsc . $pdu_text1 . chr(26) . chr(13); $l = strlen($pdu_text1); ser_write($pdu_text1); $cmd_log .= $pdu_text1; ser_write("AT+CMGS: 88 " . chr(13)); // $fp = fopen("pud_log.txt","w+"); // fwrite($fp, $cmd_log); // fclose($fp); }