deviceSet("COM" . $config['serial_port'])){ return false; }else { $serial->confBaudRate($config['baud_rate']); if ($serial->deviceOpen()) { $phone_center = InvertNumbers("86" . $config['sms_cneter_num']); $phone_sendto = InvertNumbers("86" . $mobile); $pdu_text = Ucs2Code($content); do { $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 = ""; } $mess = "11000D91" . $phone_sendto . "000800" . sprintf("%02X", strlen($pdu_text1) / 2) . $pdu_text1; $serial->sendMessage("AT+CMGF=0" . chr(13),0.5); $cmd = "AT+CMGS=" . sprintf("%d", strlen($mess) / 2) . chr(13); $serial->sendMessage($cmd); $mess_ll = "0891" . $phone_center . $mess; $serial->sendMessage($mess_ll . chr(26), 0.5); } while ($pdu_text != ""); $serial->deviceClose(); return true; } else { return false; } } } } /*** * @Method Ucs2Code UCS2编码 * @Param $str 输入字符串 * @Param $encod 输入字符串编码类型(UTF-8,GB2312,GBK) * @Return 返回编码后的字符串 */ function Ucs2Code($str, $encode = "UTF-8") { $jumpbit = strtoupper($encode) == 'GB2312' ? 2 : 3;//跳转位数 $strlen = strlen($str);//字符串长度 $pos = 0;//位置 $buffer = array(); for ($pos = 0; $pos < $strlen;) { if (ord(substr($str, $pos, 1)) >= 0xa1) {//0xa1(161)汉字编码开始 $tmpChar = substr($str, $pos, $jumpbit); $pos += $jumpbit; } else { $tmpChar = substr($str, $pos, 1); ++$pos; } $buffer[] = bin2hex(iconv("UTF-8", "UCS-2", $tmpChar)); } return strtoupper(join("", $buffer)); } /*** * @Method unUcs2Code UCS2解码 * @Param $str 输入字符串 * @Param $encod 输入字符串编码类型(UTF-8,GB2312,GBK) * @Return 返回解码后的字符串 */ function unUcs2Code($str, $encode = "UTF-8") { $strlen = strlen($str); $step = 4; $buffer = array(); for ($i = 0; $i < $strlen; $i += $step) { $buffer[] = iconv("UCS-2", $encode, pack("H4", substr($str, $i, $step))); } return join("", $buffer); } /** * 号码PDU翻转 * @param $msisdn * @return string */ function InvertNumbers($msisdn) { $len = strlen($msisdn); if (0 != fmod($len, 2)) { $msisdn .= "F"; $len = $len + 1; } for ($i = 0; $i < $len; $i += 2) { $t = $msisdn[$i]; $msisdn[$i] = $msisdn[$i + 1]; $msisdn[$i + 1] = $t; } return $msisdn; }