Files
qianbian/analysis/web/ble.js

4409 lines
117 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
let bleDevice;
let gattServer;
let epdService;
let rxtxService;
let epdCharacteristic;
let rxtxCharacteristic;
let reconnectTrys = 0;
const my_step = 480;
function delay(delayInMs) {
return new Promise(resolve => {
setTimeout(() => {
resolve(2);
}, delayInMs);
});
}
function resetVariables() {
gattServer = null;
epdService = null;
epdCharacteristic = null;
rxtxCharacteristic = null;
rxtxService = null;
document.getElementById("log").value = '';
}
async function handleError(error) {
console.log(error);
resetVariables();
if (bleDevice == null)
return;
if (reconnectTrys <= 5) {
reconnectTrys++;
await connect();
} else {
addLog("Was not able to connect, aborting");
reconnectTrys = 0;
}
}
async function sendCommand(cmd) {
if (epdCharacteristic) {
await epdCharacteristic.writeValueWithResponse(cmd)
} else {
addLog('服务不可用。蓝牙链接上了吗?')
}
}
async function clearScreen(cmd) {
addLog('刷屏')
await triggerEpdCmd(`00${cmd}`);
await triggerEpdCmd('01')
}
async function rxTxSendCommand(cmd) {
if (rxtxCharacteristic) {
await rxtxCharacteristic.writeValueWithResponse(cmd);
//addLog(`✅ [RXTX发送] 已发送 ${cmd.length} 字节`);
// 可选:等待100ms后读取响应
setTimeout(async () => {
try {
const value = await rxtxCharacteristic.readValue();
if (value && value.byteLength > 0) {
const formatted = formatReceivedData(value);
addLog(`📥 [RXTX响应] ${formatted}`);
const rxtxRxDiv = document.getElementById('rxtxRxData');
if (rxtxRxDiv) {
rxtxRxDiv.innerHTML = `📎 读取响应:\n${formatted}`;
}
}
} catch(e) {
// 忽略读取失败(可能设备没有返回数据)
}
}, 100);
} else {
addLog('服务不可用。蓝牙链接上了吗?');
}
}
async function SendCommand(cmd) {
let code;
for (let i; i < cmd.length; i += 2) {
code = '' + cmd[i] + cmd[i + 1];
triggerRxTxCmd(code);
await delay(1000);
}
}
async function rxTxSendCommand2(cmd) {
if (rxtxCharacteristic) {
await rxtxCharacteristic.writeValueWith(cmd);
} else {
addLog('服务不可用。蓝牙链接上了吗?')
}
}
async function sendBufferData(value, type) {
addLog(`开始发送图片模式:${type}, 大小 ${value.length}byte`);
let code = 'ff';
if (type === 'bwr') {
code = '00';
}
let cod = '03';
if (value.length == 7000 || value.length == 18000) { cod = '04'; }
const step = my_step;
let partIndex = 0;
for (let i = 0; i < value.length; i += step) {
addLog(`正在发送第${partIndex + 1}块. 块大小: ${step / 2 + 4}byte. 起始位置: ${i / 2}`);
await sendCommand(hexToBytes(cod + code + intToHex(i / 2, 2) + value.substring(i, i + step)));
partIndex += 1;
}
}
function updateCanvasSize() {
const sizeSelect = document.getElementById('screen-size');
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext("2d");
let width, height;
if (sizeSelect.value == "4.2传图") {
width = 400;
height = 300;
} else if (sizeSelect.value === "2.9传图") {
width = 296;
height =128;
} else if (sizeSelect.value === "日历小图") {
width = 280;
height = 100;
} else if (sizeSelect.value === "7.5传图") {
width = 800;
height = 480;
} else if (sizeSelect.value === "7.5日历小图") {
width = 400;
height = 180;
} else if (sizeSelect.value === "2.13传图") {
width = 212;
height =128;
}else if (sizeSelect.value === "2.13高分传图") {
width = 250;
height =128;
}
canvas.width = width;
canvas.height = height;
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, width, height);
update_image();
addLog(`画布尺寸已更新为: ${width}x${height}`);
}
async function upload_image() {
const canvas = document.getElementById('canvas');
const startTime = new Date().getTime();
if(canvas.width==296){
await sendBufferData(bytesToHex(canvas2bytes_bw(canvas)), 'bw')
await sendBufferData(bytesToHex(canvas2bytes_bw(canvas, 'bwr')), 'bwr')
}else if(canvas.width==250 ||canvas.width==212){
await sendBufferData(bytesToHex(canvas2bytes_bw(canvas)), 'bw')
}else{
await sendBufferData(bytesToHex(canvas2bytes(canvas)), 'bw')
await sendBufferData(bytesToHex(canvas2bytes(canvas, 'bwr')), 'bwr')
}
await delay(300);
if (canvas.width == 280 || canvas.height == 180) { await sendCommand(hexToBytes("AA")) }
else { await sendCommand(hexToBytes("01")) }
addLog(`上传完成,耗时${(new Date().getTime() - startTime) / 1000}s`);
}
async function update_imagemb(imageSource) {
if (imageSource){
const canvas = document.getElementById("unifiedCanvas");
const ctx = canvas.getContext("2d");
const image = new Image();
image.src = imageSource;
image.onload = function (event) {
URL.revokeObjectURL(this.src);
currentImage = image;
drawImageWithRotation(image);
applyImageAdjustments(canvas);
convert_dithering(canvas);
}
return;
}
}
function resetAll_mb() {
brightnessSlider.value = '-30';
contrastSlider.value = '100';
saturationSlider.value = '100';
diffusionSlider.value = '0';
// 更新显示数值
brightnessValue.textContent = -30;
contrastValue.textContent = 100;
saturationValue.textContent = 100;
diffusionValue.textContent = 0;
const canvas = document.getElementById('unifiedCanvas');
applyImageAdjustments(canvas);
}
function resetAll_mb2() {
brightnessSlider.value = '0';
contrastSlider.value = '100';
saturationSlider.value = '100';
diffusionSlider.value = '0';
// 更新显示数值
brightnessValue.textContent = 0;
contrastValue.textContent = 100;
saturationValue.textContent = 100;
diffusionValue.textContent = 0;
const canvas = document.getElementById('unifiedCanvas');
applyImageAdjustments(canvas);
}
async function upload_image_moban(bat) {
const canvas = document.getElementById('unifiedCanvas');
resetAll_mb();
cmd='EA0'+bat;
await rxTxSendCommand(hexToBytes(cmd));
const startTime = new Date().getTime();
if(canvas.width==296){
await sendBufferData(bytesToHex(canvas2bytes_bw(canvas)), 'bw')
await sendBufferData(bytesToHex(canvas2bytes_bw(canvas, 'bwr')), 'bwr')}
else { await sendBufferData(bytesToHex(canvas2bytes(canvas)), 'bw')
await sendBufferData(bytesToHex(canvas2bytes(canvas, 'bwr')), 'bwr')}
resetAll_mb2();
resetAll();
await delay(300);
await sendCommand(hexToBytes("01"));
addLog(`上传完成,耗时${(new Date().getTime() - startTime) / 1000}s`);
}
async function upload_image_lb(cmd) {
cmd='EA0'+cmd;
await rxTxSendCommand(hexToBytes(cmd));
upload_image();
}
async function upload_image_lb_num(cmd) {
if(cmd>4)cmd=4;
if(cmd<1)cmd=1;
addLog(`轮播数量已更新为: ${cmd}个!`);
cmd=cmd-1;
cmd='EA000'+cmd;
await rxTxSendCommand(hexToBytes(cmd));
addLog(`轮播数量更新成功!`);
}
async function setTime() {
const { unixNow, localeTimeString, year, month, day, week } = getUnixTime();
addLog("时间设置为: " + localeTimeString + " : dd" + intToHex(unixNow, 4));
await rxTxSendCommand(hexToBytes('dd' +
[intToHex(unixNow, 4), intToHex(year, 2), intToHex(month, 1), intToHex(day, 1), intToHex(week, 1)].join('')));
await rxTxSendCommand(hexToBytes('e2'))
}
const chinaCities = {
"北京": "101010100",
"海淀": "101010200",
"朝阳": "101010300",
"顺义": "101010400",
"怀柔": "101010500",
"通州": "101010600",
"昌平": "101010700",
"延庆": "101010800",
"丰台": "101010900",
"石景山": "101011000",
"大兴": "101011100",
"房山": "101011200",
"密云": "101011300",
"门头沟": "101011400",
"平谷": "101011500",
"东城": "101011600",
"西城": "101011700",
"上海": "101020100",
"闵行": "101020200",
"宝山": "101020300",
"黄浦": "101020400",
"嘉定": "101020500",
"浦东新区": "101020600",
"金山": "101020700",
"青浦": "101020800",
"松江": "101020900",
"奉贤": "101021000",
"崇明": "101021100",
"徐汇": "101021200",
"长宁": "101021300",
"静安": "101021400",
"普陀": "101021500",
"虹口": "101021600",
"杨浦": "101021700",
"天津": "101030100",
"武清": "101030200",
"宝坻": "101030300",
"东丽": "101030400",
"西青": "101030500",
"北辰": "101030600",
"宁河": "101030700",
"和平": "101030800",
"静海": "101030900",
"津南": "101031000",
"滨海新区": "101031100",
"河东": "101031200",
"河西": "101031300",
"蓟州": "101031400",
"南开": "101031500",
"河北": "101031600",
"红桥": "101031700",
"重庆": "101040100",
"永川": "101040200",
"合川": "101040300",
"南川": "101040400",
"江津": "101040500",
"北碚": "101040800",
"巴南": "101040900",
"长寿": "101041000",
"黔江": "101041100",
"渝中": "101041200",
"万州": "101041300",
"涪陵": "101041400",
"城口": "101041600",
"云阳": "101041700",
"巫溪": "101041800",
"奉节": "101041900",
"巫山": "101042000",
"潼南": "101042100",
"垫江": "101042200",
"梁平": "101042300",
"忠县": "101042400",
"石柱": "101042500",
"大足": "101042600",
"荣昌": "101042700",
"铜梁": "101042800",
"璧山": "101042900",
"丰都": "101043000",
"武隆": "101043100",
"彭水": "101043200",
"綦江": "101043300",
"酉阳": "101043400",
"大渡口": "101043500",
"秀山": "101043600",
"沙坪坝": "101043800",
"九龙坡": "101043900",
"南岸": "101044000",
"开州": "101044100",
"两江新区": "101044200",
"哈尔滨": "101050101",
"双城": "101050102",
"呼兰": "101050103",
"阿城": "101050104",
"宾县": "101050105",
"依兰": "101050106",
"巴彦": "101050107",
"通河": "101050108",
"方正": "101050109",
"延寿": "101050110",
"尚志": "101050111",
"五常": "101050112",
"木兰": "101050113",
"道里": "101050114",
"南岗": "101050115",
"道外": "101050116",
"平房": "101050117",
"松北": "101050118",
"香坊": "101050119",
"齐齐哈尔": "101050201",
"讷河": "101050202",
"龙江": "101050203",
"甘南": "101050204",
"富裕": "101050205",
"依安": "101050206",
"拜泉": "101050207",
"克山": "101050208",
"克东": "101050209",
"泰来": "101050210",
"龙沙": "101050211",
"建华": "101050212",
"铁锋": "101050213",
"昂昂溪": "101050214",
"富拉尔基": "101050215",
"碾子山": "101050216",
"梅里斯": "101050217",
"牡丹江": "101050301",
"海林": "101050302",
"穆棱": "101050303",
"林口": "101050304",
"绥芬河": "101050305",
"宁安": "101050306",
"东宁": "101050307",
"东安": "101050308",
"阳明": "101050309",
"爱民": "101050310",
"西安": "101050311",
"佳木斯": "101050401",
"汤原": "101050402",
"抚远": "101050403",
"桦川": "101050404",
"桦南": "101050405",
"同江": "101050406",
"富锦": "101050407",
"向阳": "101050408",
"前进": "101050409",
"东风": "101050410",
"郊区": "101050411",
"绥化": "101050501",
"肇东": "101050502",
"安达": "101050503",
"海伦": "101050504",
"明水": "101050505",
"望奎": "101050506",
"兰西": "101050507",
"青冈": "101050508",
"庆安": "101050509",
"绥棱": "101050510",
"北林": "101050511",
"黑河": "101050601",
"嫩江": "101050602",
"孙吴": "101050603",
"逊克": "101050604",
"五大连池": "101050605",
"北安": "101050606",
"爱辉": "101050607",
"大兴安岭": "101050701",
"塔河": "101050702",
"漠河": "101050703",
"呼玛": "101050704",
"加格达奇区": "101050708",
"伊春": "101050801",
"铁力": "101050804",
"嘉荫": "101050805",
"南岔": "101050806",
"友好": "101050807",
"金林": "101050808",
"伊美": "101050811",
"乌翠": "101050813",
"汤旺县": "101050814",
"大箐山县": "101050815",
"丰林": "101050816",
"大庆": "101050901",
"林甸": "101050902",
"肇州": "101050903",
"肇源": "101050904",
"杜尔伯特": "101050905",
"萨尔图": "101050906",
"龙凤": "101050907",
"让胡路": "101050908",
"红岗": "101050909",
"大同": "101050910",
"新兴": "101051001",
"七台河": "101051002",
"勃利": "101051003",
"桃山": "101051004",
"茄子河": "101051005",
"鸡西": "101051101",
"虎林": "101051102",
"密山": "101051103",
"鸡东": "101051104",
"鸡冠": "101051105",
"恒山": "101051106",
"滴道": "101051107",
"梨树": "101051108",
"城子河": "101051109",
"麻山": "101051110",
"鹤岗": "101051201",
"绥滨": "101051202",
"萝北": "101051203",
"向阳": "101051204",
"工农": "101051205",
"南山": "101051206",
"兴安": "101051207",
"东山": "101051208",
"兴山": "101051209",
"双鸭山": "101051301",
"集贤": "101051302",
"宝清": "101051303",
"饶河": "101051304",
"友谊": "101051305",
"尖山": "101051306",
"岭东": "101051307",
"四方台": "101051308",
"宝山": "101051309",
"长春": "101060101",
"农安": "101060102",
"德惠": "101060103",
"九台": "101060104",
"榆树": "101060105",
"双阳": "101060106",
"二道": "101060107",
"南关": "101060108",
"宽城": "101060109",
"朝阳": "101060110",
"绿园": "101060111",
"吉林": "101060201",
"舒兰": "101060202",
"永吉": "101060203",
"蛟河": "101060204",
"磐石": "101060205",
"桦甸": "101060206",
"昌邑": "101060207",
"龙潭": "101060208",
"船营": "101060209",
"丰满": "101060210",
"延吉": "101060301",
"敦化": "101060302",
"安图": "101060303",
"汪清": "101060304",
"和龙": "101060305",
"延边": "101060306",
"龙井": "101060307",
"珲春": "101060308",
"图们": "101060309",
"四平": "101060401",
"双辽": "101060402",
"梨树": "101060403",
"公主岭": "101060404",
"伊通": "101060405",
"铁西": "101060406",
"铁东": "101060407",
"通化": "101060501",
"梅河口": "101060502",
"柳河": "101060503",
"辉南": "101060504",
"集安": "101060505",
"通化县": "101060506",
"东昌": "101060507",
"二道江": "101060508",
"白城": "101060601",
"洮南": "101060602",
"大安": "101060603",
"镇赉": "101060604",
"通榆": "101060605",
"洮北": "101060606",
"辽源": "101060701",
"东丰": "101060702",
"东辽": "101060703",
"龙山": "101060704",
"西安": "101060705",
"松原": "101060801",
"乾安": "101060802",
"前郭": "101060803",
"长岭": "101060804",
"扶余": "101060805",
"宁江": "101060806",
"白山": "101060901",
"靖宇": "101060902",
"临江": "101060903",
"长白": "101060905",
"抚松": "101060906",
"江源": "101060907",
"浑江": "101060908",
"沈阳": "101070101",
"浑南": "101070102",
"辽中": "101070103",
"康平": "101070104",
"法库": "101070105",
"新民": "101070106",
"和平": "101070107",
"沈河": "101070108",
"大东": "101070109",
"皇姑": "101070110",
"铁西": "101070111",
"苏家屯": "101070112",
"沈北新区": "101070113",
"于洪": "101070114",
"大连": "101070201",
"瓦房店": "101070202",
"金州": "101070203",
"普兰店": "101070204",
"旅顺": "101070205",
"长海": "101070206",
"庄河": "101070207",
"中山": "101070208",
"西岗": "101070209",
"沙河口": "101070210",
"甘井子": "101070211",
"鞍山": "101070301",
"台安": "101070302",
"岫岩": "101070303",
"海城": "101070304",
"铁东": "101070305",
"铁西": "101070306",
"立山": "101070307",
"千山": "101070308",
"抚顺": "101070401",
"新宾": "101070402",
"清原": "101070403",
"新抚": "101070405",
"东洲": "101070406",
"望花": "101070407",
"顺城": "101070408",
"抚顺县": "101070409",
"本溪": "101070501",
"本溪县": "101070502",
"平山": "101070503",
"桓仁": "101070504",
"溪湖": "101070505",
"明山": "101070506",
"南芬": "101070507",
"丹东": "101070601",
"凤城": "101070602",
"宽甸": "101070603",
"东港": "101070604",
"元宝": "101070605",
"振兴": "101070606",
"振安": "101070607",
"锦州": "101070701",
"凌海": "101070702",
"古塔": "101070703",
"义县": "101070704",
"黑山": "101070705",
"北镇": "101070706",
"凌河": "101070707",
"太和": "101070708",
"营口": "101070801",
"大石桥": "101070802",
"盖州": "101070803",
"站前": "101070804",
"西市": "101070805",
"鲅鱼圈": "101070806",
"老边": "101070807",
"阜新": "101070901",
"彰武": "101070902",
"海州": "101070903",
"新邱": "101070904",
"太平": "101070905",
"清河门": "101070906",
"细河": "101070907",
"阜新县": "101070908",
"辽阳": "101071001",
"辽阳县": "101071002",
"灯塔": "101071003",
"弓长岭": "101071004",
"白塔": "101071005",
"文圣": "101071006",
"宏伟": "101071007",
"太子河": "101071008",
"铁岭": "101071101",
"开原": "101071102",
"昌图": "101071103",
"西丰": "101071104",
"调兵山": "101071105",
"银州": "101071106",
"清河": "101071107",
"铁岭县": "101071108",
"朝阳": "101071201",
"双塔": "101071202",
"凌源": "101071203",
"喀左": "101071204",
"北票": "101071205",
"龙城": "101071206",
"建平县": "101071207",
"朝阳县": "101071208",
"盘锦": "101071301",
"大洼": "101071302",
"盘山": "101071303",
"双台子": "101071304",
"兴隆台": "101071305",
"葫芦岛": "101071401",
"建昌": "101071402",
"绥中": "101071403",
"兴城": "101071404",
"连山": "101071405",
"龙港": "101071406",
"南票": "101071407",
"呼和浩特": "101080101",
"土左旗": "101080102",
"托克托": "101080103",
"和林": "101080104",
"清水河": "101080105",
"赛罕": "101080106",
"武川": "101080107",
"新城": "101080108",
"回民": "101080109",
"玉泉": "101080110",
"包头": "101080201",
"白云鄂博": "101080202",
"土右旗": "101080204",
"固阳": "101080205",
"达茂旗": "101080206",
"东河": "101080208",
"昆都仑": "101080209",
"青山": "101080210",
"石拐": "101080211",
"九原": "101080212",
"乌海": "101080301",
"海勃湾": "101080302",
"海南": "101080303",
"乌达": "101080304",
"集宁": "101080401",
"卓资": "101080402",
"化德": "101080403",
"商都": "101080404",
"乌兰察布": "101080405",
"兴和": "101080406",
"凉城": "101080407",
"察右前旗": "101080408",
"察右中旗": "101080409",
"察右后旗": "101080410",
"四子王旗": "101080411",
"丰镇": "101080412",
"通辽": "101080501",
"科左中旗": "101080503",
"科左后旗": "101080504",
"开鲁": "101080506",
"库伦": "101080507",
"奈曼": "101080508",
"扎鲁特": "101080509",
"科尔沁": "101080510",
"霍林郭勒": "101080512",
"赤峰": "101080601",
"红山": "101080602",
"阿鲁旗": "101080603",
"巴林左旗": "101080605",
"巴林右旗": "101080606",
"林西": "101080607",
"克什克腾": "101080608",
"翁牛特": "101080609",
"喀喇沁": "101080611",
"宁城": "101080613",
"敖汉": "101080614",
"元宝山": "101080616",
"松山": "101080617",
"鄂尔多斯": "101080701",
"达拉特": "101080703",
"准格尔": "101080704",
"鄂前旗": "101080705",
"鄂托克": "101080708",
"杭锦旗": "101080709",
"乌审旗": "101080710",
"伊金霍洛": "101080711",
"东胜": "101080713",
"康巴什": "101080714",
"临河": "101080801",
"五原": "101080802",
"磴口": "101080803",
"乌前旗": "101080804",
"乌中旗": "101080806",
"乌后旗": "101080807",
"杭锦后旗": "101080810",
"巴彦淖尔": "101080811",
"锡林浩特": "101080901",
"锡林郭勒": "101080902",
"二连浩特": "101080903",
"阿巴嘎": "101080904",
"苏左旗": "101080906",
"苏右旗": "101080907",
"东乌旗": "101080909",
"西乌旗": "101080910",
"太仆寺": "101080911",
"镶黄旗": "101080912",
"正镶白旗": "101080913",
"正蓝旗": "101080914",
"多伦": "101080915",
"海拉尔": "101081001",
"阿荣旗": "101081003",
"莫力达瓦": "101081004",
"鄂伦春旗": "101081005",
"鄂温克旗": "101081006",
"陈旗": "101081007",
"新左旗": "101081008",
"新右旗": "101081009",
"满洲里": "101081010",
"牙克石": "101081011",
"扎兰屯": "101081012",
"呼伦贝尔": "101081013",
"额尔古纳": "101081014",
"根河": "101081015",
"扎赉诺尔": "101081017",
"乌兰浩特": "101081101",
"阿尔山": "101081102",
"科右中旗": "101081103",
"扎赉特": "101081105",
"突泉": "101081107",
"兴安盟": "101081108",
"科右前旗": "101081109",
"阿左旗": "101081201",
"阿右旗": "101081202",
"额济纳": "101081203",
"阿拉善盟": "101081213",
"石家庄": "101090101",
"井陉": "101090102",
"正定": "101090103",
"栾城": "101090104",
"行唐": "101090105",
"灵寿": "101090106",
"高邑": "101090107",
"深泽": "101090108",
"赞皇": "101090109",
"无极": "101090110",
"平山": "101090111",
"元氏": "101090112",
"赵县": "101090113",
"辛集": "101090114",
"藁城": "101090115",
"晋州": "101090116",
"新乐": "101090117",
"鹿泉": "101090118",
"长安": "101090119",
"桥西": "101090120",
"新华": "101090121",
"井陉矿区": "101090122",
"裕华": "101090123",
"保定": "101090201",
"满城": "101090202",
"阜平": "101090203",
"徐水": "101090204",
"唐县": "101090205",
"高阳": "101090206",
"竞秀": "101090208",
"涞源": "101090209",
"望都": "101090210",
"易县": "101090212",
"莲池": "101090213",
"曲阳": "101090214",
"蠡县": "101090215",
"顺平": "101090216",
"涿州": "101090218",
"定州": "101090219",
"安国": "101090220",
"高碑店": "101090221",
"涞水": "101090222",
"定兴": "101090223",
"清苑": "101090224",
"博野": "101090225",
"张家口": "101090301",
"宣化": "101090302",
"张北": "101090303",
"康保": "101090304",
"沽源": "101090305",
"尚义": "101090306",
"蔚县": "101090307",
"阳原": "101090308",
"怀安": "101090309",
"万全": "101090310",
"怀来": "101090311",
"涿鹿": "101090312",
"赤城": "101090313",
"崇礼": "101090314",
"桥东": "101090315",
"桥西": "101090316",
"下花园": "101090317",
"双桥": "101090401",
"承德": "101090402",
"承德县": "101090403",
"兴隆": "101090404",
"平泉": "101090405",
"滦平": "101090406",
"隆化": "101090407",
"丰宁": "101090408",
"宽城": "101090409",
"围场": "101090410",
"双滦": "101090411",
"鹰手营子矿": "101090412",
"唐山": "101090501",
"丰南": "101090502",
"丰润": "101090503",
"滦州": "101090504",
"滦南": "101090505",
"乐亭": "101090506",
"迁西": "101090507",
"玉田": "101090508",
"曹妃甸": "101090509",
"遵化": "101090510",
"迁安": "101090511",
"路南": "101090513",
"路北": "101090514",
"古冶": "101090515",
"开平": "101090516",
"廊坊": "101090601",
"固安": "101090602",
"永清": "101090603",
"香河": "101090604",
"大城": "101090605",
"文安": "101090606",
"大厂": "101090607",
"霸州": "101090608",
"三河": "101090609",
"安次": "101090610",
"广阳": "101090611",
"沧州": "101090701",
"青县": "101090702",
"东光": "101090703",
"海兴": "101090704",
"盐山": "101090705",
"肃宁": "101090706",
"南皮": "101090707",
"吴桥": "101090708",
"献县": "101090709",
"孟村": "101090710",
"泊头": "101090711",
"任丘": "101090712",
"黄骅": "101090713",
"河间": "101090714",
"新华": "101090715",
"沧县": "101090716",
"运河": "101090717",
"衡水": "101090801",
"枣强": "101090802",
"武邑": "101090803",
"武强": "101090804",
"饶阳": "101090805",
"安平": "101090806",
"故城": "101090807",
"景县": "101090808",
"阜城": "101090809",
"冀州": "101090810",
"深州": "101090811",
"桃城": "101090812",
"邢台": "101090901",
"临城": "101090902",
"襄都": "101090903",
"内丘": "101090904",
"柏乡": "101090905",
"隆尧": "101090906",
"南和": "101090907",
"宁晋": "101090908",
"巨鹿": "101090909",
"新河": "101090910",
"广宗": "101090911",
"平乡": "101090912",
"威县": "101090913",
"清河": "101090914",
"临西": "101090915",
"南宫": "101090916",
"沙河": "101090917",
"任泽": "101090918",
"信都": "101090919",
"邯郸": "101091001",
"峰峰": "101091002",
"临漳": "101091003",
"成安": "101091004",
"大名": "101091005",
"涉县": "101091006",
"磁县": "101091007",
"肥乡": "101091008",
"永年": "101091009",
"邱县": "101091010",
"鸡泽": "101091011",
"广平": "101091012",
"馆陶": "101091013",
"魏县": "101091014",
"曲周": "101091015",
"武安": "101091016",
"邯山": "101091017",
"丛台": "101091018",
"复兴": "101091019",
"秦皇岛": "101091101",
"青龙": "101091102",
"昌黎": "101091103",
"抚宁": "101091104",
"卢龙": "101091105",
"北戴河": "101091106",
"海港": "101091107",
"山海关": "101091108",
"雄安新区": "101091201",
"容城": "101091202",
"安新": "101091203",
"雄县": "101091204",
"太原": "101100101",
"清徐": "101100102",
"阳曲": "101100103",
"娄烦": "101100104",
"古交": "101100105",
"尖草坪区": "101100106",
"小店区": "101100107",
"迎泽": "101100108",
"杏花岭": "101100109",
"万柏林": "101100110",
"晋源": "101100111",
"大同": "101100201",
"阳高": "101100202",
"云州": "101100203",
"天镇": "101100204",
"广灵": "101100205",
"灵丘": "101100206",
"浑源": "101100207",
"左云": "101100208",
"云冈": "101100209",
"新荣": "101100211",
"平城": "101100214",
"阳泉": "101100301",
"盂县": "101100302",
"平定": "101100303",
"矿区": "101100304",
"郊区": "101100305",
"城区": "101100306",
"晋中": "101100401",
"榆次": "101100402",
"榆社": "101100403",
"左权": "101100404",
"和顺": "101100405",
"昔阳": "101100406",
"寿阳": "101100407",
"太谷": "101100408",
"祁县": "101100409",
"平遥": "101100410",
"灵石": "101100411",
"介休": "101100412",
"长治": "101100501",
"黎城": "101100502",
"屯留": "101100503",
"潞城": "101100504",
"襄垣": "101100505",
"平顺": "101100506",
"武乡": "101100507",
"沁县": "101100508",
"长子": "101100509",
"沁源": "101100510",
"壶关": "101100511",
"潞州": "101100512",
"上党": "101100513",
"晋城": "101100601",
"沁水": "101100602",
"阳城": "101100603",
"陵川": "101100604",
"高平": "101100605",
"泽州": "101100606",
"城区": "101100607",
"临汾": "101100701",
"曲沃": "101100702",
"永和": "101100703",
"隰县": "101100704",
"大宁": "101100705",
"吉县": "101100706",
"襄汾": "101100707",
"蒲县": "101100708",
"汾西": "101100709",
"洪洞": "101100710",
"霍州": "101100711",
"乡宁": "101100712",
"翼城": "101100713",
"侯马": "101100714",
"浮山": "101100715",
"安泽": "101100716",
"古县": "101100717",
"尧都": "101100718",
"运城": "101100801",
"临猗": "101100802",
"稷山": "101100803",
"万荣": "101100804",
"河津": "101100805",
"新绛": "101100806",
"绛县": "101100807",
"闻喜": "101100808",
"垣曲": "101100809",
"永济": "101100810",
"芮城": "101100811",
"夏县": "101100812",
"平陆": "101100813",
"盐湖": "101100814",
"朔州": "101100901",
"平鲁": "101100902",
"山阴": "101100903",
"右玉": "101100904",
"应县": "101100905",
"怀仁": "101100906",
"朔城": "101100907",
"忻州": "101101001",
"定襄": "101101002",
"五台县": "101101003",
"河曲": "101101004",
"偏关": "101101005",
"神池": "101101006",
"宁武": "101101007",
"代县": "101101008",
"繁峙": "101101009",
"保德": "101101011",
"静乐": "101101012",
"岢岚": "101101013",
"五寨": "101101014",
"原平": "101101015",
"忻府": "101101016",
"吕梁": "101101100",
"离石": "101101101",
"临县": "101101102",
"兴县": "101101103",
"岚县": "101101104",
"柳林": "101101105",
"石楼": "101101106",
"方山": "101101107",
"交口": "101101108",
"中阳": "101101109",
"孝义": "101101110",
"汾阳": "101101111",
"文水": "101101112",
"交城": "101101113",
"西安": "101110101",
"长安": "101110102",
"临潼": "101110103",
"蓝田": "101110104",
"周至": "101110105",
"鄠邑": "101110106",
"高陵": "101110107",
"新城": "101110108",
"碑林": "101110109",
"莲湖": "101110110",
"灞桥": "101110111",
"未央": "101110112",
"雁塔": "101110113",
"阎良": "101110114",
"咸阳": "101110200",
"三原": "101110201",
"礼泉": "101110202",
"永寿": "101110203",
"淳化": "101110204",
"泾阳": "101110205",
"武功": "101110206",
"乾县": "101110207",
"彬州": "101110208",
"长武": "101110209",
"旬邑": "101110210",
"兴平": "101110211",
"秦都": "101110212",
"渭城": "101110213",
"延安": "101110300",
"延长": "101110301",
"延川": "101110302",
"子长": "101110303",
"宜川": "101110304",
"富县": "101110305",
"志丹": "101110306",
"安塞": "101110307",
"甘泉": "101110308",
"洛川": "101110309",
"黄陵": "101110310",
"黄龙": "101110311",
"吴起": "101110312",
"宝塔": "101110313",
"榆林": "101110401",
"府谷": "101110402",
"神木": "101110403",
"佳县": "101110404",
"定边": "101110405",
"靖边": "101110406",
"横山": "101110407",
"米脂": "101110408",
"子洲": "101110409",
"绥德": "101110410",
"吴堡": "101110411",
"清涧": "101110412",
"榆阳": "101110413",
"渭南": "101110501",
"潼关": "101110503",
"大荔": "101110504",
"白水": "101110505",
"富平": "101110506",
"蒲城": "101110507",
"澄城": "101110508",
"合阳": "101110509",
"韩城": "101110510",
"华阴": "101110511",
"临渭": "101110512",
"华州": "101110513",
"商洛": "101110601",
"洛南": "101110602",
"柞水": "101110603",
"商州": "101110604",
"镇安": "101110605",
"丹凤": "101110606",
"商南": "101110607",
"山阳": "101110608",
"安康": "101110701",
"紫阳": "101110702",
"石泉": "101110703",
"汉阴": "101110704",
"旬阳": "101110705",
"岚皋": "101110706",
"平利": "101110707",
"白河": "101110708",
"镇坪": "101110709",
"宁陕": "101110710",
"汉滨": "101110711",
"汉中": "101110801",
"略阳": "101110802",
"勉县": "101110803",
"留坝": "101110804",
"洋县": "101110805",
"城固": "101110806",
"西乡": "101110807",
"佛坪": "101110808",
"宁强": "101110809",
"南郑": "101110810",
"镇巴": "101110811",
"汉台": "101110812",
"宝鸡": "101110901",
"渭滨": "101110902",
"千阳": "101110903",
"麟游": "101110904",
"岐山": "101110905",
"凤翔": "101110906",
"扶风": "101110907",
"眉县": "101110908",
"太白": "101110909",
"凤县": "101110910",
"陇县": "101110911",
"陈仓": "101110912",
"金台": "101110913",
"铜川": "101111001",
"宜君": "101111003",
"耀州": "101111004",
"王益": "101111005",
"印台": "101111006",
"杨陵": "101111102",
"济南": "101120101",
"长清": "101120102",
"商河": "101120103",
"章丘": "101120104",
"平阴": "101120105",
"济阳": "101120106",
"历下": "101120107",
"市中": "101120108",
"槐荫": "101120109",
"天桥": "101120110",
"历城": "101120111",
"青岛": "101120201",
"崂山": "101120202",
"市南": "101120203",
"即墨": "101120204",
"胶州": "101120205",
"黄岛": "101120206",
"莱西": "101120207",
"平度": "101120208",
"市北": "101120209",
"李沧": "101120210",
"城阳": "101120211",
"淄博": "101120301",
"淄川": "101120302",
"博山": "101120303",
"高青": "101120304",
"周村": "101120305",
"沂源": "101120306",
"桓台": "101120307",
"临淄": "101120308",
"张店": "101120309",
"德州": "101120401",
"武城": "101120402",
"临邑": "101120403",
"齐河": "101120405",
"乐陵": "101120406",
"庆云": "101120407",
"平原": "101120408",
"宁津": "101120409",
"夏津": "101120410",
"禹城": "101120411",
"德城": "101120412",
"陵城": "101120413",
"烟台": "101120501",
"莱州": "101120502",
"蓬莱": "101120504",
"龙口": "101120505",
"招远": "101120506",
"栖霞": "101120507",
"福山": "101120508",
"牟平": "101120509",
"莱阳": "101120510",
"海阳": "101120511",
"芝罘": "101120512",
"莱山": "101120513",
"潍坊": "101120601",
"青州": "101120602",
"寿光": "101120603",
"临朐": "101120604",
"昌乐": "101120605",
"昌邑": "101120606",
"安丘": "101120607",
"高密": "101120608",
"诸城": "101120609",
"潍城": "101120610",
"寒亭": "101120611",
"坊子": "101120612",
"奎文": "101120613",
"济宁": "101120701",
"嘉祥": "101120702",
"微山": "101120703",
"鱼台": "101120704",
"兖州": "101120705",
"金乡": "101120706",
"汶上": "101120707",
"泗水": "101120708",
"梁山": "101120709",
"曲阜": "101120710",
"邹城": "101120711",
"任城": "101120712",
"泰安": "101120801",
"新泰": "101120802",
"泰山": "101120803",
"肥城": "101120804",
"东平": "101120805",
"宁阳": "101120806",
"岱岳": "101120807",
"临沂": "101120901",
"莒南": "101120902",
"沂南": "101120903",
"兰陵": "101120904",
"临沭": "101120905",
"郯城": "101120906",
"蒙阴": "101120907",
"平邑": "101120908",
"费县": "101120909",
"沂水": "101120910",
"兰山": "101120911",
"罗庄": "101120912",
"河东": "101120913",
"菏泽": "101121001",
"鄄城": "101121002",
"郓城": "101121003",
"东明": "101121004",
"定陶": "101121005",
"巨野": "101121006",
"曹县": "101121007",
"成武": "101121008",
"单县": "101121009",
"牡丹": "101121010",
"滨州": "101121101",
"博兴": "101121102",
"无棣": "101121103",
"阳信": "101121104",
"惠民": "101121105",
"沾化": "101121106",
"邹平": "101121107",
"滨城": "101121108",
"东营": "101121201",
"河口": "101121202",
"垦利": "101121203",
"利津": "101121204",
"广饶": "101121205",
"东营区": "101121206",
"威海": "101121301",
"文登": "101121302",
"荣成": "101121303",
"乳山": "101121304",
"环翠": "101121307",
"枣庄": "101121401",
"薛城": "101121402",
"峄城": "101121403",
"台儿庄": "101121404",
"滕州": "101121405",
"市中": "101121406",
"山亭": "101121407",
"日照": "101121501",
"五莲": "101121502",
"莒县": "101121503",
"东港": "101121504",
"岚山": "101121505",
"莱芜": "101121601",
"钢城": "101121603",
"聊城": "101121701",
"冠县": "101121702",
"阳谷": "101121703",
"高唐": "101121704",
"茌平": "101121705",
"东阿": "101121706",
"临清": "101121707",
"东昌府": "101121708",
"莘县": "101121709",
"乌鲁木齐": "101130101",
"天山": "101130102",
"沙依巴克": "101130104",
"达坂城": "101130105",
"新市": "101130106",
"水磨沟": "101130107",
"头屯河": "101130111",
"米东": "101130112",
"乌鲁木齐县": "101130113",
"克拉玛依": "101130201",
"乌尔禾": "101130202",
"白碱滩": "101130203",
"独山子": "101130204",
"克拉玛依区": "101130205",
"石河子": "101130301",
"昌吉": "101130401",
"呼图壁": "101130402",
"阜康": "101130404",
"吉木萨尔": "101130405",
"奇台": "101130406",
"玛纳斯": "101130407",
"木垒": "101130408",
"昌吉市": "101130410",
"吐鲁番": "101130501",
"托克逊": "101130502",
"高昌": "101130503",
"鄯善": "101130504",
"库尔勒": "101130601",
"轮台": "101130602",
"尉犁": "101130603",
"若羌": "101130604",
"且末": "101130605",
"和静": "101130606",
"焉耆": "101130607",
"和硕": "101130608",
"巴音郭楞": "101130609",
"博湖": "101130612",
"阿拉尔": "101130701",
"阿克苏": "101130801",
"乌什": "101130802",
"温宿": "101130803",
"拜城": "101130804",
"新和": "101130805",
"沙雅": "101130806",
"库车": "101130807",
"柯坪": "101130808",
"阿瓦提": "101130809",
"阿克苏市": "101130810",
"喀什地区": "101130901",
"英吉沙": "101130902",
"塔什库尔干": "101130903",
"麦盖提": "101130904",
"莎车": "101130905",
"叶城": "101130906",
"泽普": "101130907",
"巴楚": "101130908",
"岳普湖": "101130909",
"伽师": "101130910",
"疏附": "101130911",
"疏勒": "101130912",
"喀什市": "101130913",
"伊宁": "101131001",
"察布查尔": "101131002",
"尼勒克": "101131003",
"伊宁县": "101131004",
"巩留": "101131005",
"新源": "101131006",
"昭苏": "101131007",
"特克斯": "101131008",
"霍城": "101131009",
"霍尔果斯": "101131010",
"奎屯": "101131011",
"伊犁": "101131012",
"塔城地区": "101131101",
"裕民": "101131102",
"额敏": "101131103",
"和布克赛尔": "101131104",
"托里": "101131105",
"乌苏": "101131106",
"沙湾": "101131107",
"塔城市": "101131108",
"哈密": "101131201",
"伊州": "101131202",
"巴里坤": "101131203",
"伊吾": "101131204",
"和田地区": "101131301",
"皮山": "101131302",
"策勒": "101131303",
"墨玉": "101131304",
"洛浦": "101131305",
"民丰": "101131306",
"于田": "101131307",
"和田市": "101131308",
"和田县": "101131309",
"阿勒泰地区": "101131401",
"哈巴河": "101131402",
"吉木乃": "101131405",
"布尔津": "101131406",
"福海": "101131407",
"富蕴": "101131408",
"青河": "101131409",
"阿勒泰市": "101131410",
"阿图什": "101131501",
"乌恰": "101131502",
"阿克陶": "101131503",
"阿合奇": "101131504",
"克州": "101131505",
"博乐": "101131601",
"温泉": "101131602",
"精河": "101131603",
"博尔塔拉": "101131604",
"阿拉山口": "101131606",
"图木舒克": "101131701",
"五家渠": "101131801",
"铁门关": "101131901",
"昆玉": "101131920",
"北屯": "101132101",
"双河": "101132201",
"可克达拉": "101132301",
"胡杨河": "101132401",
"新星市": "101132501",
"白杨市": "101132601",
"拉萨": "101140101",
"当雄": "101140102",
"尼木": "101140103",
"林周": "101140104",
"堆龙德庆": "101140105",
"曲水": "101140106",
"达孜": "101140107",
"墨竹工卡": "101140108",
"城关": "101140109",
"日喀则": "101140201",
"拉孜": "101140202",
"南木林": "101140203",
"聂拉木": "101140204",
"定日": "101140205",
"江孜": "101140206",
"仲巴": "101140208",
"萨嘎": "101140209",
"吉隆": "101140210",
"昂仁": "101140211",
"定结": "101140212",
"萨迦": "101140213",
"谢通门": "101140214",
"桑珠孜": "101140215",
"岗巴": "101140216",
"白朗": "101140217",
"亚东": "101140218",
"康马": "101140219",
"仁布": "101140220",
"山南": "101140301",
"贡嘎": "101140302",
"扎囊": "101140303",
"加查": "101140304",
"浪卡子": "101140305",
"错那": "101140306",
"隆子": "101140307",
"乃东": "101140309",
"桑日": "101140310",
"洛扎": "101140311",
"措美": "101140312",
"琼结": "101140313",
"曲松": "101140314",
"林芝": "101140401",
"波密": "101140402",
"米林": "101140403",
"察隅": "101140404",
"工布江达": "101140405",
"朗县": "101140406",
"墨脱": "101140407",
"巴宜": "101140408",
"昌都": "101140501",
"丁青": "101140502",
"边坝": "101140503",
"洛隆": "101140504",
"左贡": "101140505",
"芒康": "101140506",
"类乌齐": "101140507",
"八宿": "101140508",
"江达": "101140509",
"察雅": "101140510",
"贡觉": "101140511",
"卡若": "101140512",
"那曲": "101140601",
"尼玛": "101140602",
"嘉黎": "101140603",
"班戈": "101140604",
"安多": "101140605",
"索县": "101140606",
"聂荣": "101140607",
"巴青": "101140608",
"比如": "101140609",
"双湖": "101140610",
"申扎": "101140611",
"色尼": "101140612",
"阿里地区": "101140701",
"改则": "101140702",
"普兰": "101140705",
"札达": "101140706",
"噶尔": "101140707",
"日土": "101140708",
"革吉": "101140709",
"措勤": "101140710",
"西宁": "101150101",
"大通": "101150102",
"湟源": "101150103",
"湟中": "101150104",
"城东": "101150105",
"城中": "101150106",
"城西": "101150107",
"城北": "101150108",
"平安": "101150201",
"乐都": "101150202",
"民和": "101150203",
"互助": "101150204",
"化隆": "101150205",
"循化": "101150206",
"海东": "101150207",
"同仁": "101150301",
"尖扎": "101150302",
"泽库": "101150303",
"河南": "101150304",
"黄南": "101150305",
"共和": "101150401",
"海南": "101150402",
"贵德": "101150404",
"兴海": "101150406",
"贵南": "101150407",
"同德": "101150408",
"玛沁": "101150501",
"班玛": "101150502",
"甘德": "101150503",
"达日": "101150504",
"久治": "101150505",
"玛多": "101150506",
"果洛": "101150507",
"玉树州": "101150601",
"称多": "101150602",
"治多": "101150603",
"杂多": "101150604",
"囊谦": "101150605",
"曲麻莱": "101150606",
"玉树市": "101150607",
"德令哈": "101150701",
"海西": "101150702",
"天峻": "101150708",
"乌兰": "101150709",
"茫崖": "101150712",
"大柴旦": "101150713",
"格尔木": "101150714",
"都兰": "101150715",
"海晏": "101150801",
"门源": "101150802",
"祁连": "101150803",
"海北": "101150804",
"刚察": "101150806",
"兰州": "101160101",
"皋兰": "101160102",
"永登": "101160103",
"榆中": "101160104",
"城关": "101160105",
"七里河": "101160106",
"西固": "101160107",
"安宁": "101160108",
"红古": "101160109",
"定西": "101160201",
"通渭": "101160202",
"陇西": "101160203",
"渭源": "101160204",
"临洮": "101160205",
"漳县": "101160206",
"岷县": "101160207",
"安定": "101160208",
"平凉": "101160301",
"泾川": "101160302",
"灵台": "101160303",
"崇信": "101160304",
"华亭": "101160305",
"庄浪": "101160306",
"静宁": "101160307",
"崆峒": "101160308",
"庆阳": "101160401",
"西峰": "101160402",
"环县": "101160403",
"华池": "101160404",
"合水": "101160405",
"正宁": "101160406",
"宁县": "101160407",
"镇原": "101160408",
"庆城": "101160409",
"武威": "101160501",
"民勤": "101160502",
"古浪": "101160503",
"凉州": "101160504",
"天祝": "101160505",
"金昌": "101160601",
"永昌": "101160602",
"金川": "101160603",
"张掖": "101160701",
"肃南": "101160702",
"民乐": "101160703",
"临泽": "101160704",
"高台": "101160705",
"山丹": "101160706",
"甘州": "101160707",
"酒泉": "101160801",
"肃州": "101160802",
"金塔": "101160803",
"阿克塞": "101160804",
"瓜州": "101160805",
"肃北": "101160806",
"玉门": "101160807",
"敦煌": "101160808",
"天水": "101160901",
"秦州": "101160902",
"清水": "101160903",
"秦安": "101160904",
"甘谷": "101160905",
"武山": "101160906",
"张家川": "101160907",
"麦积": "101160908",
"武都": "101161001",
"成县": "101161002",
"文县": "101161003",
"宕昌": "101161004",
"康县": "101161005",
"西和": "101161006",
"礼县": "101161007",
"徽县": "101161008",
"两当": "101161009",
"陇南": "101161010",
"临夏": "101161101",
"康乐": "101161102",
"永靖": "101161103",
"广河": "101161104",
"和政": "101161105",
"东乡": "101161106",
"积石山": "101161107",
"临夏市": "101161108",
"临夏县": "101161109",
"合作": "101161201",
"临潭": "101161202",
"卓尼": "101161203",
"舟曲": "101161204",
"迭部": "101161205",
"玛曲": "101161206",
"碌曲": "101161207",
"夏河": "101161208",
"甘南": "101161209",
"白银": "101161301",
"靖远": "101161302",
"会宁": "101161303",
"平川": "101161304",
"景泰": "101161305",
"白银区": "101161306",
"嘉峪关": "101161401",
"银川": "101170101",
"永宁": "101170102",
"灵武": "101170103",
"贺兰": "101170104",
"兴庆": "101170105",
"西夏": "101170106",
"金凤": "101170107",
"石嘴山": "101170201",
"惠农": "101170202",
"平罗": "101170203",
"大武口": "101170205",
"吴忠": "101170301",
"同心": "101170302",
"盐池": "101170303",
"利通": "101170304",
"红寺堡": "101170305",
"青铜峡": "101170306",
"固原": "101170401",
"西吉": "101170402",
"隆德": "101170403",
"泾源": "101170404",
"原州": "101170405",
"彭阳": "101170406",
"中卫": "101170501",
"中宁": "101170502",
"沙坡头": "101170503",
"海原": "101170504",
"郑州": "101180101",
"巩义": "101180102",
"荥阳": "101180103",
"登封": "101180104",
"新密": "101180105",
"新郑": "101180106",
"中牟": "101180107",
"上街": "101180108",
"中原": "101180109",
"二七": "101180110",
"管城": "101180111",
"金水": "101180112",
"惠济": "101180113",
"安阳": "101180201",
"汤阴": "101180202",
"滑县": "101180203",
"内黄": "101180204",
"林州": "101180205",
"文峰": "101180206",
"北关": "101180207",
"殷都": "101180208",
"龙安": "101180209",
"安阳县": "101180210",
"新乡": "101180301",
"获嘉": "101180302",
"原阳": "101180303",
"辉县": "101180304",
"卫辉": "101180305",
"延津": "101180306",
"封丘": "101180307",
"长垣": "101180308",
"红旗": "101180309",
"卫滨": "101180310",
"凤泉": "101180311",
"牧野": "101180312",
"新乡县": "101180313",
"许昌": "101180401",
"鄢陵": "101180402",
"襄城": "101180403",
"长葛": "101180404",
"禹州": "101180405",
"魏都": "101180406",
"建安": "101180407",
"平顶山": "101180501",
"郏县": "101180502",
"宝丰": "101180503",
"汝州": "101180504",
"叶县": "101180505",
"舞钢": "101180506",
"鲁山": "101180507",
"石龙": "101180508",
"新华": "101180509",
"卫东": "101180510",
"湛河": "101180511",
"信阳": "101180601",
"息县": "101180602",
"罗山": "101180603",
"光山": "101180604",
"新县": "101180605",
"淮滨": "101180606",
"潢川": "101180607",
"固始": "101180608",
"商城": "101180609",
"浉河": "101180610",
"平桥": "101180611",
"南阳": "101180701",
"南召": "101180702",
"方城": "101180703",
"社旗": "101180704",
"西峡": "101180705",
"内乡": "101180706",
"镇平": "101180707",
"淅川": "101180708",
"新野": "101180709",
"唐河": "101180710",
"邓州": "101180711",
"桐柏": "101180712",
"宛城": "101180713",
"卧龙": "101180714",
"开封": "101180801",
"杞县": "101180802",
"尉氏": "101180803",
"通许": "101180804",
"兰考": "101180805",
"龙亭": "101180806",
"顺河": "101180807",
"鼓楼": "101180808",
"禹王台": "101180809",
"祥符": "101180810",
"洛阳": "101180901",
"新安": "101180902",
"宜阳": "101180904",
"洛宁": "101180905",
"伊川": "101180906",
"嵩县": "101180907",
"偃师": "101180908",
"栾川": "101180909",
"汝阳": "101180910",
"孟津": "101180911",
"老城": "101180912",
"西工": "101180913",
"瀍河": "101180914",
"涧西": "101180915",
"洛龙": "101180916",
"商丘": "101181001",
"梁园": "101181002",
"睢县": "101181003",
"民权": "101181004",
"虞城": "101181005",
"柘城": "101181006",
"宁陵": "101181007",
"夏邑": "101181008",
"永城": "101181009",
"睢阳": "101181010",
"焦作": "101181101",
"修武": "101181102",
"武陟": "101181103",
"沁阳": "101181104",
"解放": "101181105",
"博爱": "101181106",
"温县": "101181107",
"孟州": "101181108",
"中站": "101181109",
"马村": "101181110",
"山阳": "101181111",
"鹤壁": "101181201",
"浚县": "101181202",
"淇县": "101181203",
"鹤山": "101181204",
"山城": "101181205",
"淇滨": "101181206",
"濮阳": "101181301",
"台前": "101181302",
"南乐": "101181303",
"清丰": "101181304",
"范县": "101181305",
"华龙": "101181306",
"濮阳县": "101181307",
"周口": "101181401",
"扶沟": "101181402",
"太康": "101181403",
"淮阳": "101181404",
"西华": "101181405",
"商水": "101181406",
"项城": "101181407",
"郸城": "101181408",
"鹿邑": "101181409",
"沈丘": "101181410",
"川汇": "101181411",
"漯河": "101181501",
"临颍": "101181502",
"舞阳": "101181503",
"源汇": "101181504",
"郾城": "101181505",
"召陵": "101181506",
"驻马店": "101181601",
"西平": "101181602",
"遂平": "101181603",
"上蔡": "101181604",
"汝南": "101181605",
"泌阳": "101181606",
"平舆": "101181607",
"新蔡": "101181608",
"确山": "101181609",
"正阳": "101181610",
"驿城": "101181611",
"三门峡": "101181701",
"灵宝": "101181702",
"渑池": "101181703",
"卢氏": "101181704",
"义马": "101181705",
"湖滨": "101181707",
"陕州": "101181708",
"济源": "101181801",
"南京": "101190101",
"溧水": "101190102",
"高淳": "101190103",
"江宁": "101190104",
"六合": "101190105",
"浦口": "101190107",
"玄武": "101190108",
"秦淮": "101190109",
"建邺": "101190110",
"鼓楼": "101190111",
"栖霞": "101190112",
"雨花台": "101190113",
"无锡": "101190201",
"江阴": "101190202",
"宜兴": "101190203",
"锡山": "101190204",
"惠山": "101190205",
"滨湖": "101190206",
"梁溪": "101190207",
"新吴": "101190208",
"镇江": "101190301",
"丹阳": "101190302",
"扬中": "101190303",
"句容": "101190304",
"丹徒": "101190305",
"京口": "101190306",
"润州": "101190307",
"苏州": "101190401",
"常熟": "101190402",
"张家港": "101190403",
"昆山": "101190404",
"吴中": "101190405",
"虎丘": "101190406",
"吴江": "101190407",
"太仓": "101190408",
"相城": "101190409",
"姑苏": "101190410",
"南通": "101190501",
"海安": "101190502",
"如皋": "101190503",
"如东": "101190504",
"崇川": "101190505",
"启东": "101190507",
"海门": "101190508",
"通州": "101190509",
"扬州": "101190601",
"宝应": "101190602",
"仪征": "101190603",
"高邮": "101190604",
"江都": "101190605",
"邗江": "101190606",
"广陵": "101190607",
"盐城": "101190701",
"响水": "101190702",
"滨海": "101190703",
"阜宁": "101190704",
"射阳": "101190705",
"建湖": "101190706",
"东台": "101190707",
"大丰": "101190708",
"盐都": "101190709",
"亭湖": "101190710",
"徐州": "101190801",
"铜山": "101190802",
"丰县": "101190803",
"沛县": "101190804",
"邳州": "101190805",
"睢宁": "101190806",
"新沂": "101190807",
"鼓楼": "101190808",
"云龙": "101190809",
"贾汪": "101190810",
"泉山": "101190811",
"淮安": "101190901",
"金湖": "101190902",
"盱眙": "101190903",
"洪泽": "101190904",
"涟水": "101190905",
"淮阴区": "101190906",
"清江浦": "101190907",
"淮安区": "101190908",
"连云港": "101191001",
"东海": "101191002",
"赣榆": "101191003",
"灌云": "101191004",
"灌南": "101191005",
"海州": "101191006",
"连云": "101191007",
"常州": "101191101",
"溧阳": "101191102",
"金坛": "101191103",
"武进": "101191104",
"天宁": "101191105",
"钟楼": "101191106",
"新北": "101191107",
"泰州": "101191201",
"兴化": "101191202",
"泰兴": "101191203",
"姜堰": "101191204",
"靖江": "101191205",
"海陵": "101191206",
"高港": "101191207",
"宿迁": "101191301",
"沭阳": "101191302",
"泗阳": "101191303",
"泗洪": "101191304",
"宿豫": "101191305",
"宿城": "101191306",
"武汉": "101200101",
"蔡甸": "101200102",
"黄陂": "101200103",
"新洲": "101200104",
"江夏": "101200105",
"东西湖": "101200106",
"江岸": "101200107",
"江汉": "101200108",
"硚口": "101200109",
"汉阳": "101200110",
"武昌": "101200111",
"青山": "101200112",
"洪山": "101200113",
"汉南": "101200114",
"襄阳": "101200201",
"襄州": "101200202",
"保康": "101200203",
"南漳": "101200204",
"宜城": "101200205",
"老河口": "101200206",
"谷城": "101200207",
"枣阳": "101200208",
"襄城": "101200209",
"樊城": "101200210",
"鄂州": "101200301",
"梁子湖": "101200302",
"华容": "101200303",
"鄂城": "101200304",
"孝感": "101200401",
"安陆": "101200402",
"云梦": "101200403",
"大悟": "101200404",
"应城": "101200405",
"汉川": "101200406",
"孝昌": "101200407",
"孝南": "101200408",
"黄冈": "101200501",
"红安": "101200502",
"麻城": "101200503",
"罗田": "101200504",
"英山": "101200505",
"浠水": "101200506",
"蕲春": "101200507",
"黄梅": "101200508",
"武穴": "101200509",
"团风": "101200510",
"黄州": "101200511",
"黄石": "101200601",
"大冶": "101200602",
"阳新": "101200603",
"铁山": "101200604",
"下陆": "101200605",
"西塞山": "101200606",
"黄石港": "101200607",
"咸宁": "101200701",
"赤壁": "101200702",
"嘉鱼": "101200703",
"崇阳": "101200704",
"通城": "101200705",
"通山": "101200706",
"咸安": "101200707",
"荆州": "101200801",
"江陵": "101200802",
"公安": "101200803",
"石首": "101200804",
"监利": "101200805",
"洪湖": "101200806",
"松滋": "101200807",
"沙市": "101200808",
"荆州区": "101200809",
"宜昌": "101200901",
"远安": "101200902",
"秭归": "101200903",
"兴山": "101200904",
"西陵": "101200905",
"五峰": "101200906",
"当阳": "101200907",
"长阳": "101200908",
"宜都": "101200909",
"枝江": "101200910",
"夷陵": "101200912",
"伍家岗": "101200913",
"点军": "101200914",
"猇亭": "101200915",
"恩施州": "101201001",
"利川": "101201002",
"建始": "101201003",
"咸丰": "101201004",
"宣恩": "101201005",
"鹤峰": "101201006",
"来凤": "101201007",
"巴东": "101201008",
"恩施市": "101201009",
"十堰": "101201101",
"竹溪": "101201102",
"郧西": "101201103",
"郧阳": "101201104",
"竹山": "101201105",
"房县": "101201106",
"丹江口": "101201107",
"茅箭": "101201108",
"张湾": "101201109",
"神农架": "101201201",
"随州": "101201301",
"广水": "101201302",
"曾都": "101201303",
"随县": "101201304",
"荆门": "101201401",
"钟祥": "101201402",
"京山": "101201403",
"掇刀": "101201404",
"沙洋": "101201405",
"东宝": "101201406",
"天门": "101201501",
"仙桃": "101201601",
"潜江": "101201701",
"杭州": "101210101",
"萧山": "101210102",
"桐庐": "101210103",
"淳安": "101210104",
"建德": "101210105",
"余杭": "101210106",
"临安": "101210107",
"富阳": "101210108",
"上城": "101210109",
"钱塘": "101210111",
"拱墅": "101210112",
"西湖": "101210113",
"滨江": "101210114",
"临平": "101210115",
"湖州": "101210201",
"长兴": "101210202",
"安吉": "101210203",
"德清": "101210204",
"吴兴": "101210205",
"南浔": "101210206",
"嘉兴": "101210301",
"嘉善": "101210302",
"海宁": "101210303",
"桐乡": "101210304",
"平湖": "101210305",
"海盐": "101210306",
"南湖": "101210307",
"秀洲": "101210308",
"宁波": "101210401",
"海曙": "101210402",
"慈溪": "101210403",
"余姚": "101210404",
"奉化": "101210405",
"象山": "101210406",
"宁海": "101210408",
"江北": "101210409",
"北仑": "101210410",
"鄞州": "101210411",
"镇海": "101210412",
"越城": "101210501",
"诸暨": "101210502",
"上虞": "101210503",
"新昌": "101210504",
"嵊州": "101210505",
"柯桥": "101210506",
"绍兴": "101210507",
"台州": "101210601",
"玉环": "101210603",
"三门": "101210604",
"天台": "101210605",
"仙居": "101210606",
"温岭": "101210607",
"临海": "101210610",
"椒江": "101210611",
"黄岩": "101210612",
"路桥": "101210613",
"温州": "101210701",
"泰顺": "101210702",
"文成": "101210703",
"平阳": "101210704",
"瑞安": "101210705",
"洞头": "101210706",
"乐清": "101210707",
"永嘉": "101210708",
"苍南": "101210709",
"鹿城": "101210710",
"龙湾": "101210711",
"瓯海": "101210712",
"龙港": "101210713",
"丽水": "101210801",
"遂昌": "101210802",
"龙泉": "101210803",
"缙云": "101210804",
"青田": "101210805",
"云和": "101210806",
"庆元": "101210807",
"松阳": "101210808",
"景宁": "101210809",
"莲都": "101210810",
"金华": "101210901",
"浦江": "101210902",
"兰溪": "101210903",
"义乌": "101210904",
"东阳": "101210905",
"武义": "101210906",
"永康": "101210907",
"磐安": "101210908",
"婺城": "101210909",
"金东": "101210910",
"衢州": "101211001",
"常山": "101211002",
"开化": "101211003",
"龙游": "101211004",
"江山": "101211005",
"衢江": "101211006",
"柯城": "101211007",
"舟山": "101211101",
"嵊泗": "101211102",
"岱山": "101211104",
"普陀": "101211105",
"定海": "101211106",
"合肥": "101220101",
"长丰": "101220102",
"肥东": "101220103",
"肥西": "101220104",
"巢湖": "101220105",
"庐江": "101220106",
"瑶海": "101220107",
"庐阳": "101220108",
"蜀山": "101220109",
"包河": "101220110",
"蚌埠": "101220201",
"怀远": "101220202",
"固镇": "101220203",
"五河": "101220204",
"龙子湖": "101220205",
"蚌山": "101220206",
"禹会": "101220207",
"淮上": "101220208",
"芜湖": "101220301",
"繁昌": "101220302",
"湾沚": "101220303",
"南陵": "101220304",
"无为": "101220305",
"镜湖": "101220306",
"弋江": "101220307",
"鸠江": "101220308",
"淮南": "101220401",
"凤台": "101220402",
"潘集": "101220403",
"大通": "101220404",
"田家庵": "101220405",
"谢家集": "101220406",
"八公山": "101220407",
"寿县": "101220408",
"马鞍山": "101220501",
"当涂": "101220502",
"含山": "101220503",
"和县": "101220504",
"花山": "101220505",
"雨山": "101220506",
"博望": "101220507",
"安庆": "101220601",
"太湖": "101220603",
"潜山": "101220604",
"怀宁": "101220605",
"宿松": "101220606",
"望江": "101220607",
"岳西": "101220608",
"桐城": "101220609",
"迎江": "101220610",
"大观": "101220611",
"宜秀": "101220612",
"宿州": "101220701",
"砀山": "101220702",
"灵璧": "101220703",
"泗县": "101220704",
"萧县": "101220705",
"埇桥": "101220706",
"阜阳": "101220801",
"阜南": "101220802",
"颍上": "101220803",
"临泉": "101220804",
"界首": "101220805",
"太和": "101220806",
"颍州": "101220807",
"颍东": "101220808",
"颍泉": "101220809",
"亳州": "101220901",
"涡阳": "101220902",
"利辛": "101220903",
"蒙城": "101220904",
"谯城": "101220905",
"黄山": "101221001",
"黄山区": "101221002",
"屯溪": "101221003",
"祁门": "101221004",
"黟县": "101221005",
"歙县": "101221006",
"休宁": "101221007",
"徽州": "101221009",
"滁州": "101221101",
"凤阳": "101221102",
"明光": "101221103",
"定远": "101221104",
"全椒": "101221105",
"来安": "101221106",
"天长": "101221107",
"琅琊": "101221108",
"南谯": "101221109",
"淮北": "101221201",
"濉溪": "101221202",
"杜集": "101221203",
"相山": "101221204",
"烈山": "101221205",
"铜陵": "101221301",
"铜官": "101221302",
"义安": "101221303",
"郊区": "101221304",
"枞阳": "101221305",
"宣城": "101221401",
"泾县": "101221402",
"旌德": "101221403",
"宁国": "101221404",
"绩溪": "101221405",
"广德": "101221406",
"郎溪": "101221407",
"宣州": "101221408",
"六安": "101221501",
"霍邱": "101221502",
"金安": "101221504",
"金寨": "101221505",
"霍山": "101221506",
"舒城": "101221507",
"裕安": "101221508",
"叶集": "101221509",
"池州": "101221701",
"东至": "101221702",
"青阳": "101221703",
"石台": "101221705",
"贵池": "101221706",
"福州": "101230101",
"闽清": "101230102",
"闽侯": "101230103",
"罗源": "101230104",
"连江": "101230105",
"鼓楼": "101230106",
"永泰": "101230107",
"平潭": "101230108",
"台江": "101230109",
"长乐": "101230110",
"福清": "101230111",
"仓山": "101230112",
"马尾": "101230113",
"晋安": "101230114",
"厦门": "101230201",
"同安": "101230202",
"思明": "101230203",
"海沧": "101230204",
"湖里": "101230205",
"集美": "101230206",
"翔安": "101230207",
"宁德": "101230301",
"古田": "101230302",
"霞浦": "101230303",
"寿宁": "101230304",
"周宁": "101230305",
"福安": "101230306",
"柘荣": "101230307",
"福鼎": "101230308",
"屏南": "101230309",
"蕉城": "101230310",
"莆田": "101230401",
"仙游": "101230402",
"涵江": "101230404",
"秀屿": "101230405",
"荔城": "101230406",
"城厢": "101230407",
"泉州": "101230501",
"安溪": "101230502",
"金门": "101230503",
"永春": "101230504",
"德化": "101230505",
"南安": "101230506",
"惠安": "101230508",
"晋江": "101230509",
"石狮": "101230510",
"鲤城": "101230511",
"丰泽": "101230512",
"洛江": "101230513",
"泉港": "101230514",
"漳州": "101230601",
"长泰": "101230602",
"南靖": "101230603",
"平和": "101230604",
"龙海": "101230605",
"漳浦": "101230606",
"诏安": "101230607",
"东山": "101230608",
"云霄": "101230609",
"华安": "101230610",
"芗城": "101230611",
"龙文": "101230612",
"龙岩": "101230701",
"长汀": "101230702",
"连城": "101230703",
"武平": "101230704",
"上杭": "101230705",
"永定": "101230706",
"漳平": "101230707",
"新罗": "101230708",
"三明": "101230801",
"宁化": "101230802",
"清流": "101230803",
"泰宁": "101230804",
"将乐": "101230805",
"建宁": "101230806",
"明溪": "101230807",
"沙县": "101230808",
"尤溪": "101230809",
"永安": "101230810",
"大田": "101230811",
"三元": "101230813",
"南平": "101230901",
"顺昌": "101230902",
"光泽": "101230903",
"邵武": "101230904",
"武夷山": "101230905",
"浦城": "101230906",
"建阳": "101230907",
"松溪": "101230908",
"政和": "101230909",
"建瓯": "101230910",
"延平": "101230911",
"南昌": "101240101",
"新建": "101240102",
"南昌县": "101240103",
"安义": "101240104",
"进贤": "101240105",
"东湖": "101240106",
"西湖": "101240107",
"青云谱": "101240108",
"红谷滩": "101240109",
"青山湖": "101240110",
"九江": "101240201",
"瑞昌": "101240202",
"庐山": "101240203",
"武宁": "101240204",
"德安": "101240205",
"永修": "101240206",
"湖口": "101240207",
"彭泽": "101240208",
"都昌": "101240210",
"浔阳": "101240211",
"修水": "101240212",
"共青城": "101240213",
"濂溪": "101240214",
"柴桑": "101240215",
"上饶": "101240301",
"鄱阳": "101240302",
"婺源": "101240303",
"信州": "101240304",
"余干": "101240305",
"万年": "101240306",
"德兴": "101240307",
"广信": "101240308",
"弋阳": "101240309",
"横峰": "101240310",
"铅山": "101240311",
"玉山": "101240312",
"广丰": "101240313",
"抚州": "101240401",
"广昌": "101240402",
"乐安": "101240403",
"崇仁": "101240404",
"金溪": "101240405",
"资溪": "101240406",
"宜黄": "101240407",
"南城": "101240408",
"南丰": "101240409",
"黎川": "101240410",
"东乡": "101240411",
"临川": "101240412",
"宜春": "101240501",
"铜鼓": "101240502",
"宜丰": "101240503",
"万载": "101240504",
"上高": "101240505",
"靖安": "101240506",
"奉新": "101240507",
"高安": "101240508",
"樟树": "101240509",
"丰城": "101240510",
"袁州": "101240511",
"吉安": "101240601",
"吉安县": "101240602",
"吉水": "101240603",
"新干": "101240604",
"峡江": "101240605",
"永丰": "101240606",
"永新": "101240607",
"井冈山": "101240608",
"万安": "101240609",
"遂川": "101240610",
"泰和": "101240611",
"安福": "101240612",
"吉州": "101240614",
"青原": "101240615",
"赣州": "101240701",
"崇义": "101240702",
"上犹": "101240703",
"南康": "101240704",
"大余": "101240705",
"信丰": "101240706",
"宁都": "101240707",
"石城": "101240708",
"瑞金": "101240709",
"于都": "101240710",
"会昌": "101240711",
"安远": "101240712",
"全南": "101240713",
"龙南": "101240714",
"定南": "101240715",
"寻乌": "101240716",
"兴国": "101240717",
"赣县": "101240718",
"章贡": "101240719",
"景德镇": "101240801",
"乐平": "101240802",
"浮梁": "101240803",
"昌江": "101240804",
"珠山": "101240805",
"萍乡": "101240901",
"莲花": "101240902",
"上栗": "101240903",
"安源": "101240904",
"芦溪": "101240905",
"湘东": "101240906",
"新余": "101241001",
"分宜": "101241002",
"渝水": "101241003",
"鹰潭": "101241101",
"余江": "101241102",
"贵溪": "101241103",
"月湖": "101241104",
"长沙": "101250101",
"宁乡": "101250102",
"浏阳": "101250103",
"望城": "101250105",
"长沙县": "101250106",
"芙蓉": "101250107",
"天心": "101250108",
"岳麓": "101250109",
"开福": "101250110",
"雨花": "101250111",
"湘潭": "101250201",
"韶山": "101250202",
"湘乡": "101250203",
"雨湖": "101250204",
"岳塘": "101250205",
"湘潭县": "101250206",
"株洲": "101250301",
"攸县": "101250302",
"醴陵": "101250303",
"荷塘": "101250304",
"茶陵": "101250305",
"炎陵": "101250306",
"芦淞": "101250307",
"石峰": "101250308",
"天元": "101250309",
"渌口": "101250310",
"衡阳": "101250401",
"衡山": "101250402",
"衡东": "101250403",
"祁东": "101250404",
"衡阳县": "101250405",
"常宁": "101250406",
"衡南": "101250407",
"耒阳": "101250408",
"南岳": "101250409",
"珠晖": "101250410",
"雁峰": "101250411",
"石鼓": "101250412",
"蒸湘": "101250413",
"郴州": "101250501",
"桂阳": "101250502",
"嘉禾": "101250503",
"宜章": "101250504",
"临武": "101250505",
"北湖": "101250506",
"资兴": "101250507",
"汝城": "101250508",
"安仁": "101250509",
"永兴": "101250510",
"桂东": "101250511",
"苏仙": "101250512",
"常德": "101250601",
"安乡": "101250602",
"桃源": "101250603",
"汉寿": "101250604",
"澧县": "101250605",
"临澧": "101250606",
"石门": "101250607",
"津市": "101250608",
"武陵": "101250609",
"鼎城": "101250610",
"益阳": "101250700",
"赫山区": "101250701",
"南县": "101250702",
"桃江": "101250703",
"安化": "101250704",
"沅江": "101250705",
"资阳": "101250706",
"娄底": "101250801",
"双峰": "101250802",
"冷水江": "101250803",
"娄星": "101250804",
"新化": "101250805",
"涟源": "101250806",
"邵阳": "101250901",
"隆回": "101250902",
"洞口": "101250903",
"新邵": "101250904",
"邵东": "101250905",
"绥宁": "101250906",
"新宁": "101250907",
"武冈": "101250908",
"城步": "101250909",
"邵阳县": "101250910",
"双清": "101250911",
"大祥": "101250912",
"北塔": "101250913",
"岳阳": "101251001",
"华容": "101251002",
"湘阴": "101251003",
"汨罗": "101251004",
"平江": "101251005",
"临湘": "101251006",
"岳阳楼区": "101251007",
"云溪": "101251008",
"君山": "101251009",
"岳阳县": "101251010",
"张家界": "101251101",
"桑植": "101251102",
"慈利": "101251103",
"武陵源": "101251104",
"永定": "101251105",
"怀化": "101251201",
"鹤城": "101251202",
"沅陵": "101251203",
"辰溪": "101251204",
"靖州": "101251205",
"会同": "101251206",
"通道": "101251207",
"麻阳": "101251208",
"新晃": "101251209",
"芷江": "101251210",
"溆浦": "101251211",
"中方": "101251212",
"洪江": "101251213",
"永州": "101251401",
"祁阳": "101251402",
"东安": "101251403",
"双牌": "101251404",
"道县": "101251405",
"宁远": "101251406",
"江永": "101251407",
"蓝山": "101251408",
"新田": "101251409",
"江华": "101251410",
"冷水滩": "101251411",
"零陵": "101251412",
"吉首": "101251501",
"保靖": "101251502",
"永顺": "101251503",
"古丈": "101251504",
"凤凰": "101251505",
"泸溪": "101251506",
"龙山": "101251507",
"花垣": "101251508",
"湘西": "101251509",
"贵阳": "101260101",
"白云": "101260102",
"花溪": "101260103",
"乌当": "101260104",
"息烽": "101260105",
"开阳": "101260106",
"修文": "101260107",
"清镇": "101260108",
"云岩": "101260110",
"南明": "101260111",
"观山湖": "101260112",
"遵义": "101260201",
"仁怀": "101260203",
"绥阳": "101260204",
"湄潭": "101260205",
"凤冈": "101260206",
"桐梓": "101260207",
"赤水": "101260208",
"习水": "101260209",
"道真": "101260210",
"正安": "101260211",
"务川": "101260212",
"余庆": "101260213",
"汇川": "101260214",
"红花岗": "101260215",
"播州": "101260216",
"安顺": "101260301",
"普定": "101260302",
"镇宁": "101260303",
"平坝": "101260304",
"紫云": "101260305",
"关岭": "101260306",
"西秀": "101260307",
"都匀": "101260401",
"贵定": "101260402",
"瓮安": "101260403",
"长顺": "101260404",
"福泉": "101260405",
"惠水": "101260406",
"龙里": "101260407",
"罗甸": "101260408",
"平塘": "101260409",
"独山": "101260410",
"三都": "101260411",
"荔波": "101260412",
"黔南": "101260413",
"凯里": "101260501",
"岑巩": "101260502",
"施秉": "101260503",
"镇远": "101260504",
"黄平": "101260505",
"黔东南": "101260506",
"麻江": "101260507",
"丹寨": "101260508",
"三穗": "101260509",
"台江": "101260510",
"剑河": "101260511",
"雷山": "101260512",
"黎平": "101260513",
"天柱": "101260514",
"锦屏": "101260515",
"榕江": "101260516",
"从江": "101260517",
"铜仁": "101260601",
"江口": "101260602",
"玉屏": "101260603",
"万山": "101260604",
"思南": "101260605",
"碧江": "101260606",
"印江": "101260607",
"石阡": "101260608",
"沿河": "101260609",
"德江": "101260610",
"松桃": "101260611",
"毕节": "101260701",
"赫章": "101260702",
"金沙": "101260703",
"威宁": "101260704",
"大方": "101260705",
"纳雍": "101260706",
"织金": "101260707",
"黔西": "101260708",
"七星关": "101260709",
"水城": "101260801",
"六枝": "101260802",
"六盘水": "101260803",
"盘州": "101260804",
"钟山": "101260805",
"兴义": "101260901",
"晴隆": "101260902",
"兴仁": "101260903",
"贞丰": "101260904",
"望谟": "101260905",
"黔西南": "101260906",
"安龙": "101260907",
"册亨": "101260908",
"普安": "101260909",
"成都": "101270101",
"龙泉驿": "101270102",
"新都": "101270103",
"温江": "101270104",
"金堂": "101270105",
"双流": "101270106",
"郫都": "101270107",
"大邑": "101270108",
"蒲江": "101270109",
"新津": "101270110",
"都江堰": "101270111",
"彭州": "101270112",
"邛崃": "101270113",
"崇州": "101270114",
"青白江": "101270115",
"锦江": "101270116",
"青羊": "101270117",
"金牛": "101270118",
"武侯": "101270119",
"成华": "101270120",
"简阳": "101270121",
"攀枝花": "101270201",
"仁和": "101270202",
"米易": "101270203",
"盐边": "101270204",
"东区": "101270205",
"西区": "101270206",
"自贡": "101270301",
"富顺": "101270302",
"荣县": "101270303",
"自流井": "101270304",
"贡井": "101270305",
"大安": "101270306",
"沿滩": "101270307",
"绵阳": "101270401",
"三台": "101270402",
"盐亭": "101270403",
"梓潼": "101270405",
"北川": "101270406",
"平武": "101270407",
"江油": "101270408",
"涪城": "101270409",
"游仙": "101270410",
"安州": "101270411",
"南充": "101270501",
"南部": "101270502",
"营山": "101270503",
"蓬安": "101270504",
"仪陇": "101270505",
"西充": "101270506",
"阆中": "101270507",
"顺庆": "101270508",
"高坪": "101270509",
"嘉陵": "101270510",
"达州": "101270601",
"宣汉": "101270602",
"开江": "101270603",
"大竹": "101270604",
"渠县": "101270605",
"万源": "101270606",
"通川": "101270607",
"达川": "101270608",
"遂宁": "101270701",
"蓬溪": "101270702",
"射洪": "101270703",
"船山": "101270704",
"安居": "101270705",
"大英": "101270706",
"广安": "101270801",
"岳池": "101270802",
"武胜": "101270803",
"邻水": "101270804",
"华蓥": "101270805",
"前锋": "101270806",
"广安区": "101270807",
"巴中": "101270901",
"通江": "101270902",
"南江": "101270903",
"平昌": "101270904",
"巴州": "101270905",
"恩阳": "101270906",
"泸州": "101271001",
"江阳": "101271002",
"泸县": "101271003",
"合江": "101271004",
"叙永": "101271005",
"古蔺": "101271006",
"纳溪": "101271007",
"龙马潭": "101271008",
"宜宾": "101271101",
"翠屏": "101271102",
"叙州区": "101271103",
"南溪": "101271104",
"江安": "101271105",
"长宁": "101271106",
"高县": "101271107",
"珙县": "101271108",
"筠连": "101271109",
"兴文": "101271110",
"屏山": "101271111",
"内江": "101271201",
"东兴": "101271202",
"威远": "101271203",
"资中": "101271204",
"隆昌": "101271205",
"市中": "101271206",
"资阳": "101271301",
"安岳": "101271302",
"乐至": "101271303",
"雁江": "101271305",
"乐山": "101271401",
"犍为": "101271402",
"井研": "101271403",
"夹江": "101271404",
"沐川": "101271405",
"峨边": "101271406",
"马边": "101271407",
"市中": "101271410",
"沙湾": "101271411",
"五通桥": "101271412",
"金口河": "101271413",
"峨眉山市": "101271414",
"眉山": "101271501",
"仁寿": "101271502",
"彭山": "101271503",
"洪雅": "101271504",
"丹棱": "101271505",
"青神": "101271506",
"东坡": "101271507",
"凉山": "101271601",
"木里": "101271603",
"盐源": "101271604",
"德昌": "101271605",
"会理": "101271606",
"会东": "101271607",
"宁南": "101271608",
"普格": "101271609",
"西昌": "101271610",
"金阳": "101271611",
"昭觉": "101271612",
"喜德": "101271613",
"冕宁": "101271614",
"越西": "101271615",
"甘洛": "101271616",
"雷波": "101271617",
"美姑": "101271618",
"布拖": "101271619",
"雅安": "101271701",
"名山": "101271702",
"荥经": "101271703",
"汉源": "101271704",
"石棉": "101271705",
"天全": "101271706",
"芦山": "101271707",
"宝兴": "101271708",
"雨城": "101271709",
"甘孜": "101271801",
"康定": "101271802",
"泸定": "101271803",
"丹巴": "101271804",
"九龙": "101271805",
"雅江": "101271806",
"道孚": "101271807",
"炉霍": "101271808",
"新龙": "101271809",
"德格": "101271810",
"白玉": "101271811",
"石渠": "101271812",
"色达": "101271813",
"理塘": "101271814",
"巴塘": "101271815",
"乡城": "101271816",
"稻城": "101271817",
"得荣": "101271818",
"甘孜县": "101271819",
"阿坝": "101271901",
"汶川": "101271902",
"理县": "101271903",
"茂县": "101271904",
"松潘": "101271905",
"九寨沟": "101271906",
"金川": "101271907",
"小金": "101271908",
"黑水": "101271909",
"马尔康": "101271910",
"壤塘": "101271911",
"若尔盖": "101271912",
"红原": "101271913",
"阿坝县": "101271914",
"德阳": "101272001",
"中江": "101272002",
"广汉": "101272003",
"什邡": "101272004",
"绵竹": "101272005",
"罗江": "101272006",
"旌阳": "101272007",
"广元": "101272101",
"旺苍": "101272102",
"青川": "101272103",
"剑阁": "101272104",
"苍溪": "101272105",
"利州": "101272106",
"昭化": "101272107",
"朝天": "101272108",
"广州": "101280101",
"番禺": "101280102",
"从化": "101280103",
"增城": "101280104",
"花都": "101280105",
"荔湾": "101280106",
"越秀": "101280107",
"海珠": "101280108",
"天河": "101280109",
"白云": "101280110",
"黄埔": "101280111",
"南沙": "101280112",
"韶关": "101280201",
"乳源": "101280202",
"始兴": "101280203",
"翁源": "101280204",
"乐昌": "101280205",
"仁化": "101280206",
"南雄": "101280207",
"新丰": "101280208",
"曲江": "101280209",
"浈江": "101280210",
"武江": "101280211",
"惠州": "101280301",
"博罗": "101280302",
"惠阳": "101280303",
"惠东": "101280304",
"龙门": "101280305",
"惠城": "101280306",
"梅州": "101280401",
"兴宁": "101280402",
"蕉岭": "101280403",
"大埔": "101280404",
"梅江": "101280405",
"丰顺": "101280406",
"平远": "101280407",
"五华": "101280408",
"梅县": "101280409",
"汕头": "101280501",
"潮阳": "101280502",
"澄海": "101280503",
"南澳": "101280504",
"龙湖": "101280505",
"金平": "101280506",
"濠江": "101280507",
"潮南": "101280508",
"深圳": "101280601",
"罗湖": "101280602",
"福田": "101280603",
"南山": "101280604",
"宝安": "101280605",
"龙岗": "101280606",
"盐田": "101280607",
"龙华": "101280608",
"坪山": "101280609",
"光明": "101280610",
"珠海": "101280701",
"斗门": "101280702",
"金湾": "101280703",
"香洲": "101280704",
"佛山": "101280800",
"顺德": "101280801",
"三水": "101280802",
"南海": "101280803",
"高明": "101280804",
"禅城": "101280805",
"肇庆": "101280901",
"广宁": "101280902",
"四会": "101280903",
"端州": "101280904",
"德庆": "101280905",
"怀集": "101280906",
"封开": "101280907",
"高要": "101280908",
"鼎湖": "101280909",
"湛江": "101281001",
"吴川": "101281002",
"雷州": "101281003",
"徐闻": "101281004",
"廉江": "101281005",
"赤坎": "101281006",
"遂溪": "101281007",
"坡头": "101281008",
"霞山": "101281009",
"麻章": "101281010",
"江门": "101281101",
"开平": "101281103",
"新会": "101281104",
"恩平": "101281105",
"台山": "101281106",
"蓬江": "101281107",
"鹤山": "101281108",
"江海": "101281109",
"河源": "101281201",
"紫金": "101281202",
"连平": "101281203",
"和平": "101281204",
"龙川": "101281205",
"东源": "101281206",
"源城": "101281207",
"清远": "101281301",
"连南": "101281302",
"连州": "101281303",
"连山": "101281304",
"阳山": "101281305",
"佛冈": "101281306",
"英德": "101281307",
"清新": "101281308",
"清城": "101281309",
"云浮": "101281401",
"罗定": "101281402",
"新兴": "101281403",
"郁南": "101281404",
"云城": "101281405",
"云安": "101281406",
"潮州": "101281501",
"饶平": "101281502",
"潮安": "101281503",
"湘桥": "101281504",
"东莞": "101281601",
"中山": "101281701",
"阳江": "101281801",
"阳春": "101281802",
"阳东": "101281803",
"阳西": "101281804",
"江城": "101281805",
"揭阳": "101281901",
"揭西": "101281902",
"普宁": "101281903",
"惠来": "101281904",
"揭东": "101281905",
"榕城": "101281906",
"茂名": "101282001",
"高州": "101282002",
"化州": "101282003",
"电白": "101282004",
"信宜": "101282005",
"茂南": "101282007",
"汕尾": "101282101",
"海丰": "101282102",
"陆丰": "101282103",
"陆河": "101282104",
"城区": "101282105",
"昆明": "101290101",
"五华": "101290102",
"东川": "101290103",
"寻甸": "101290104",
"晋宁": "101290105",
"宜良": "101290106",
"石林": "101290107",
"呈贡": "101290108",
"富民": "101290109",
"嵩明": "101290110",
"禄劝": "101290111",
"安宁": "101290112",
"盘龙": "101290114",
"官渡": "101290115",
"西山": "101290116",
"大理州": "101290201",
"云龙": "101290202",
"漾濞": "101290203",
"永平": "101290204",
"宾川": "101290205",
"弥渡": "101290206",
"祥云": "101290207",
"巍山": "101290208",
"剑川": "101290209",
"洱源": "101290210",
"鹤庆": "101290211",
"南涧": "101290212",
"大理市": "101290213",
"红河": "101290301",
"石屏": "101290302",
"建水": "101290303",
"弥勒": "101290304",
"元阳": "101290305",
"绿春": "101290306",
"开远": "101290307",
"个旧": "101290308",
"蒙自": "101290309",
"屏边": "101290310",
"泸西": "101290311",
"金平": "101290312",
"河口": "101290313",
"红河县": "101290314",
"曲靖": "101290401",
"沾益": "101290402",
"陆良": "101290403",
"富源": "101290404",
"马龙": "101290405",
"师宗": "101290406",
"罗平": "101290407",
"会泽": "101290408",
"宣威": "101290409",
"麒麟": "101290410",
"保山": "101290501",
"隆阳": "101290502",
"龙陵": "101290503",
"施甸": "101290504",
"昌宁": "101290505",
"腾冲": "101290506",
"文山州": "101290601",
"西畴": "101290602",
"马关": "101290603",
"麻栗坡": "101290604",
"砚山": "101290605",
"丘北": "101290606",
"广南": "101290607",
"富宁": "101290608",
"文山市": "101290609",
"玉溪": "101290701",
"澄江": "101290702",
"江川": "101290703",
"通海": "101290704",
"华宁": "101290705",
"新平": "101290706",
"易门": "101290707",
"峨山": "101290708",
"元江": "101290709",
"红塔": "101290710",
"楚雄州": "101290801",
"大姚": "101290802",
"元谋": "101290803",
"姚安": "101290804",
"牟定": "101290805",
"南华": "101290806",
"武定": "101290807",
"禄丰": "101290808",
"双柏": "101290809",
"永仁": "101290810",
"楚雄市": "101290811",
"普洱": "101290901",
"景谷": "101290902",
"景东": "101290903",
"澜沧": "101290904",
"思茅": "101290905",
"墨江": "101290906",
"江城": "101290907",
"孟连": "101290908",
"西盟": "101290909",
"镇沅": "101290911",
"宁洱": "101290912",
"昭通": "101291001",
"鲁甸": "101291002",
"彝良": "101291003",
"镇雄": "101291004",
"威信": "101291005",
"巧家": "101291006",
"绥江": "101291007",
"永善": "101291008",
"盐津": "101291009",
"大关": "101291010",
"水富": "101291011",
"昭阳": "101291012",
"临沧": "101291101",
"沧源": "101291102",
"耿马": "101291103",
"双江": "101291104",
"凤庆": "101291105",
"永德": "101291106",
"云县": "101291107",
"镇康": "101291108",
"临翔": "101291109",
"怒江": "101291201",
"福贡": "101291203",
"兰坪": "101291204",
"泸水": "101291205",
"贡山": "101291207",
"香格里拉": "101291301",
"德钦": "101291302",
"维西": "101291303",
"迪庆": "101291305",
"丽江": "101291401",
"永胜": "101291402",
"华坪": "101291403",
"宁蒗": "101291404",
"古城": "101291405",
"玉龙": "101291406",
"德宏": "101291501",
"陇川": "101291503",
"盈江": "101291504",
"瑞丽": "101291506",
"梁河": "101291507",
"芒市": "101291508",
"景洪": "101291601",
"西双版纳": "101291602",
"勐海": "101291603",
"勐腊": "101291605",
"南宁": "101300101",
"兴宁": "101300102",
"邕宁": "101300103",
"横州": "101300104",
"隆安": "101300105",
"马山": "101300106",
"上林": "101300107",
"武鸣": "101300108",
"宾阳": "101300109",
"青秀": "101300110",
"江南": "101300111",
"西乡塘": "101300112",
"良庆": "101300113",
"崇左": "101300201",
"天等": "101300202",
"龙州": "101300203",
"凭祥": "101300204",
"大新": "101300205",
"扶绥": "101300206",
"宁明": "101300207",
"江州": "101300208",
"柳州": "101300301",
"柳城": "101300302",
"城中": "101300303",
"鹿寨": "101300304",
"柳江": "101300305",
"融安": "101300306",
"融水": "101300307",
"三江": "101300308",
"鱼峰": "101300309",
"柳南": "101300310",
"柳北": "101300311",
"来宾": "101300401",
"忻城": "101300402",
"金秀": "101300403",
"象州": "101300404",
"武宣": "101300405",
"合山": "101300406",
"兴宾": "101300407",
"桂林": "101300501",
"秀峰": "101300502",
"龙胜": "101300503",
"永福": "101300504",
"临桂": "101300505",
"兴安": "101300506",
"灵川": "101300507",
"全州": "101300508",
"灌阳": "101300509",
"阳朔": "101300510",
"恭城": "101300511",
"平乐": "101300512",
"荔浦": "101300513",
"资源": "101300514",
"叠彩": "101300515",
"象山": "101300516",
"七星": "101300517",
"雁山": "101300518",
"梧州": "101300601",
"藤县": "101300602",
"万秀": "101300603",
"苍梧": "101300604",
"蒙山": "101300605",
"岑溪": "101300606",
"长洲": "101300607",
"龙圩": "101300608",
"贺州": "101300701",
"昭平": "101300702",
"富川": "101300703",
"钟山": "101300704",
"八步": "101300705",
"平桂": "101300706",
"贵港": "101300801",
"桂平": "101300802",
"平南": "101300803",
"港北": "101300804",
"港南": "101300805",
"覃塘": "101300806",
"玉林": "101300901",
"博白": "101300902",
"北流": "101300903",
"容县": "101300904",
"陆川": "101300905",
"兴业": "101300906",
"玉州": "101300907",
"福绵": "101300908",
"百色": "101301001",
"那坡": "101301002",
"田阳": "101301003",
"德保": "101301004",
"靖西": "101301005",
"田东": "101301006",
"平果": "101301007",
"隆林": "101301008",
"西林": "101301009",
"乐业": "101301010",
"凌云": "101301011",
"田林": "101301012",
"右江": "101301013",
"钦州": "101301101",
"浦北": "101301102",
"灵山": "101301103",
"钦南": "101301104",
"钦北": "101301105",
"河池": "101301201",
"天峨": "101301202",
"东兰": "101301203",
"巴马": "101301204",
"环江": "101301205",
"罗城": "101301206",
"宜州": "101301207",
"凤山": "101301208",
"南丹": "101301209",
"都安": "101301210",
"大化": "101301211",
"金城江": "101301212",
"北海": "101301301",
"合浦": "101301302",
"海城": "101301304",
"银海": "101301305",
"铁山港": "101301306",
"防城港": "101301401",
"上思": "101301402",
"东兴": "101301403",
"港口": "101301404",
"防城": "101301405",
"海口": "101310101",
"秀英": "101310102",
"龙华": "101310103",
"琼山": "101310104",
"美兰": "101310105",
"三亚": "101310201",
"东方": "101310202",
"临高": "101310203",
"澄迈": "101310204",
"儋州": "101310205",
"昌江": "101310206",
"白沙": "101310207",
"琼中": "101310208",
"定安": "101310209",
"屯昌": "101310210",
"琼海": "101310211",
"文昌": "101310212",
"海棠": "101310213",
"保亭": "101310214",
"万宁": "101310215",
"陵水": "101310216",
"吉阳": "101310218",
"天涯": "101310219",
"乐东": "101310221",
"五指山": "101310222",
"崖州": "101310223",
"三沙": "101310301",
"西沙": "101310302",
"南沙": "101310304",
"香港": "101320101",
"新界": "101320103",
"油尖旺": "14606",
"东区": "1B6D3",
"中西区": "1D255",
"屯门": "1DC87",
"大埔": "275A5",
"深水埗": "28FE1",
"九龙城": "2BBD1",
"葵青": "2BC09",
"元朗": "39CD9",
"湾仔": "407DA",
"西贡": "4622E",
"沙田": "55E7E",
"观塘": "8A9CA",
"北区": "8E1C5",
"离岛": "9173",
"黄大仙": "D5EC3",
"荃湾": "DD9B5",
"南区": "E87DC",
"澳门": "101330101",
"氹仔岛": "101330102",
"路环岛": "101330103",
"路凼城": "1444B",
"风顺堂区": "2E3F1",
"嘉模堂区": "4B3A7",
"望德堂区": "5102",
"大堂区": "7C47E",
"圣方济各堂区": "83145",
"花王堂区": "AEF10",
"花地玛堂区": "D3B7A",
"钓鱼岛": "101231001",
"台北": "101340101",
"桃园": "101340102",
"新竹": "101340103",
"宜兰市": "101340104",
"高雄": "101340201",
"嘉义市": "101340202",
"台南市": "101340203",
"台东市": "101340204",
"屏东市": "101340205",
"台中市": "101340401",
"苗栗市": "101340402",
"彰化市": "101340403",
"南投市": "101340404",
"花莲市": "101340405",
"来义乡": "1064D",
"楠西区": "1131A",
"冬山乡": "125A0",
"后里区": "12705",
"鸟松区": "12AC3",
"林口区": "1353E",
"太平区": "14A62",
"秀林乡": "14B6",
"关山镇": "15F5F",
"中正区": "15FC8",
"中西区": "16946",
"朴子市": "1851B",
"苓雅区": "1860C",
"峨眉乡": "198CA",
"莺歌区": "1A131",
"丰滨乡": "1AFB5",
"大安区": "1BD97",
"卑南乡": "1C2F9",
"清水区": "1C370",
"三峽区": "1CB96",
"茂林区": "1D33",
"高树乡": "1EA6F",
"九如乡": "1ECA0",
"仁爱乡": "1F7E2",
"深坑区": "1F906",
"阿莲区": "1FCAC",
"乌日区": "2.2E+51",
"东势乡": "2008A",
"伸港乡": "2045E",
"士林区": "215EB",
"龙井区": "232B2",
"五结乡": "25B67",
"埔心乡": "27297",
"大肚区": "274A6",
"田寮区": "2787E",
"水林乡": "2897F",
"芦竹区": "28C50",
"竹崎乡": "2A0EA",
"平镇区": "2A17C",
"梓官区": "2A7A9",
"南化区": "2ADEC",
"官田区": "2B8F1",
"牡丹乡": "2BD74",
"土城区": "2BF61",
"暖暖区": "2CA40",
"新埔镇": "2CEDF",
"口湖乡": "2DD33",
"关庙区": "2DF8D",
"长滨乡": "2E+301",
"埤头乡": "2F677",
"香山区": "300A2",
"仁德区": "30712",
"苏澳镇": "30EB5",
"海端乡": "33D54",
"北投区": "34272",
"阿里山乡": "34B85",
"泰安乡": "3561E",
"长治乡": "35EA",
"中和区": "36039",
"集集镇": "36375",
"大村乡": "37981",
"楠梓区": "394EA",
"文山区": "3981F",
"瑞芳区": "39A9E",
"满州乡": "3A2F4",
"安平区": "3A428",
"大里区": "3B30D",
"中埔乡": "3B81C",
"北屯区": "3BD59",
"六脚乡": "3D16B",
"仑背乡": "3EC6B",
"二水乡": "3ED2D",
"七股区": "3FC8E",
"八德区": "4297D",
"溪口乡": "42F72",
"车城乡": "42F75",
"里港乡": "43E4E",
"西湖乡": "441DA",
"桃源区": "442FB",
"梅山乡": "44BA1",
"潭子区": "44BC2",
"狮潭乡": "4515E",
"大城乡": "46843",
"崁顶乡": "4786",
"安南区": "485D2",
"永康区": "48D19",
"复兴区": "490B9",
"古坑乡": "4A86F",
"七堵区": "4A9E4",
"西湖乡": "4B6DC",
"和美镇": "4CA1B",
"美浓区": "4D0CD",
"中山区": "4D45B",
"名间乡": "4D55F",
"佳里区": "4D572",
"杨梅区": "4E71A",
"番路乡": "4E999",
"太保市": "4EB49",
"南区": "4EE12",
"樹林区": "4F7B8",
"员山乡": "4FB12",
"东山区": "4FC38",
"土库镇": "5029C",
"麦寮乡": "503D8",
"八里区": "50460",
"永靖乡": "50886",
"礁溪乡": "52116",
"永安区": "522A8",
"金峰乡": "528C1",
"龟山区": "5327F",
"国姓乡": "53937",
"绿岛乡": "53C0D",
"大湖乡": "545BD",
"田中镇": "55AF3",
"芳苑乡": "56FB2",
"金山区": "5A624",
"布袋镇": "5B01A",
"燕巢区": "5B14E",
"柳营区": "5D1AC",
"竹田乡": "5DCD0",
"平渓区": "5DE8A",
"莿桐乡": "5F054",
"斗南镇": "5F767",
"信义区": "5FA11",
"太麻里乡": "5FFC8",
"玉井区": "601C9",
"新丰乡": "60301",
"义竹乡": "607B7",
"路竹区": "60C6E",
"池上乡": "6149A",
"万里区": "618B3",
"观音区": "62622",
"石门区": "62C94",
"将军区": "640E",
"大埔乡": "64722",
"前金区": "64DF4",
"西港区": "65449",
"南区": "65B59",
"狮子乡": "6781C",
"林园区": "685A4",
"吉安乡": "687D9",
"大寮区": "69041",
"旗山区": "6946C",
"瑞穗乡": "69C7D",
"汐止区": "6A009",
"潮州镇": "6C288",
"佳冬乡": "6D813",
"西区": "6DB7C",
"三湾乡": "6F1CA",
"盐水区": "6F8E8",
"新港乡": "707A5",
"南澳乡": "71A41",
"坪林区": "72D3F",
"横山乡": "7412D",
"南港区": "74604",
"杉林区": "74A65",
"中区": "75272",
"龙崎区": "7527B",
"马公市": "753A2",
"万荣乡": "77487",
"恒春镇": "77836",
"大安区": "77922",
"大甲区": "77B7",
"大树区": "786AD",
"埔里镇": "78C5D",
"新北市": "79754",
"头城镇": "7AC15",
"旗津区": "7AC37",
"东区": "7AD1B",
"白河区": "7B4D7",
"卓兰镇": "7CD4B",
"新城乡": "7CE62",
"宝山乡": "7E+53",
"麻豆区": "7E91B",
"前镇区": "7EF65",
"湖内区": "7F2B8",
"石冈区": "7F7CD",
"学甲区": "81AE3",
"枋山乡": "82644",
"万華区": "8296C",
"草屯镇": "83F45",
"埔盐乡": "849C0",
"尖石乡": "8647F",
"秀水乡": "86861",
"二林镇": "86AEC",
"北斗镇": "87DA",
"斗六市": "884E",
"西屯区": "88DAC",
"盐埕区": "89FCB",
"大园区": "8A667",
"五股区": "8B37C",
"林内乡": "8C73A",
"竹塘乡": "8D63C",
"冈山区": "8E+183",
"万丹乡": "8E9AA",
"三地门乡": "8ECB0",
"竹东镇": "9.6E+32",
"公馆乡": "92813",
"南州乡": "93143",
"内门区": "9346C",
"新社区": "95178",
"苑里镇": "954F5",
"新营区": "955CC",
"三重区": "95B3C",
"达仁乡": "96121",
"雾台乡": "963DA",
"鹿野乡": "97619",
"后龙镇": "97B1A",
"线西乡": "97F69",
"大埤乡": "98DE7",
"大内区": "98EF7",
"台西乡": "9AB11",
"北区": "9B388",
"乌来区": "9B92A",
"望安乡": "9C6B3",
"永和区": "9D3E5",
"山上区": "9DAAA",
"溪州乡": "9DD7F",
"新化区": "9E358",
"芬园乡": "9E5DD",
"社头乡": "9F928",
"松山区": "A033A",
"湖西乡": "A06E6",
"安定区": "A3EFD",
"通霄镇": "A503E",
"六龟区": "A7AA7",
"雾峰区": "A7B14",
"田尾乡": "A9903",
"兰屿乡": "A9A12",
"新园乡": "A9C2C",
"基隆市": "A9E1",
"麟洛乡": "AACD9",
"弥陀区": "AACF5",
"鹿港镇": "AD033",
"员林镇": "AD179",
"万峦乡": "AD515",
"壮围乡": "AE2EB",
"凤山区": "AEA05",
"后壁区": "AF42E",
"造桥乡": "AF6DE",
"东势区": "B1954",
"林边乡": "B1B72",
"大社区": "B25DD",
"沙鹿区": "B263B",
"貢寮区": "B28D3",
"新市区": "B345C",
"四湖乡": "B40F3",
"大同区": "B4131",
"元长乡": "B4967",
"东港镇": "B509A",
"三义乡": "B57C7",
"卓溪乡": "B75BB",
"寿丰乡": "B7A02",
"竹山镇": "B7B31",
"信义乡": "B82B7",
"枋寮乡": "B8DEC",
"新兴区": "B93FB",
"大雅区": "B99C9",
"春日乡": "BA103",
"西螺镇": "BAD4D",
"光复乡": "BB61B",
"梧栖区": "BBB19",
"褒忠乡": "BBE60",
"泰山区": "BCAE1",
"白沙乡": "BCF10",
"南屯区": "BD890",
"三芝区": "BDA5B",
"大武乡": "BE9AC",
"小港区": "BEA9E",
"水里乡": "BF01C",
"淡水区": "BFA38",
"北门区": "BFFEA",
"玛家乡": "C1078",
"竹北市": "C30C",
"中山区": "C346",
"内埔乡": "C4AF1",
"龙潭区": "C4BED",
"外埔区": "C532F",
"罗东镇": "C5445",
"水上乡": "C5473",
"五峰乡": "C87FF",
"头份镇": "CA3",
"凤林镇": "CA83B",
"三民区": "CAE8D",
"六甲区": "CB526",
"善化区": "CB5C1",
"左营区": "CD807",
"北埔乡": "CF68C",
"东势乡": "CFCC4",
"民雄乡": "D05D7",
"西屿乡": "D0809",
"石碇区": "D0B00",
"信义区": "D13AC",
"竹南镇": "D257A",
"七美乡": "D2EBD",
"安乐区": "D3A0D",
"中正区": "D3A1D",
"鹿草乡": "D4650",
"内湖区": "D54D9",
"中坜区": "D6C2D",
"鹿谷乡": "D7481",
"东河乡": "D7D8E",
"甲仙区": "D8B7D",
"蘆洲区": "D9469",
"板桥区": "D96E9",
"大林镇": "D9B1A",
"芎林乡": "DA4C5",
"铜锣乡": "DACF8",
"中寮乡": "DB374",
"二仑乡": "DBA28",
"北区": "DCECC",
"南庄乡": "DE049",
"湖口乡": "DE3B7",
"成功镇": "DE8A4",
"东区": "DED29",
"泰武乡": "DFB95",
"头屋乡": "E00DD",
"那玛夏区": "E3120",
"三星乡": "E427E",
"下营区": "E4AB6",
"左镇区": "E5098",
"虎尾镇": "E5452",
"花坛乡": "E6107",
"福兴乡": "E8B22",
"丰原区": "E8BA8",
"新埤乡": "E9D19",
"茄萣区": "E9D4F",
"新庄区": "E9DC2",
"富里乡": "EA346",
"鱼池乡": "EB721",
"大同乡": "EBC37",
"玉里镇": "EBCEC",
"琉球乡": "EC5FB",
"鼓山区": "ED37A",
"大溪区": "ED785",
"仁武区": "EDE8C",
"延平乡": "EE096",
"关西镇": "EE328",
"和平区": "EED7A",
"新店区": "EFBAC",
"归仁区": "F0DE1",
"仁爱区": "F116A",
"桥头区": "F178D",
"双渓区": "F21E4",
"神冈区": "F2FA2",
"北港镇": "F35CF",
"盐埔乡": "F4F1",
"新屋区": "F69B",
};
// 发送十六进制字符串(如 "6666tfgf" 转十六进制)
async function sendHexString(wifi_ssd,wifi_pass,city) {
if (!rxtxCharacteristic) {
addLog('❌ 服务不可用,请先连接蓝牙');
return false;
}
// 或者简写
if (!chinaCities[city]||!wifi_ssd||!wifi_pass) {
alert(`注意你配置的数据是否正确!账号名:${wifi_ssd},密码:${wifi_pass},城市:${city}!`);
return false;
}
try {
const encoder = new TextEncoder();
wifi='WIFI_SSID:'+wifi_ssd+';WIFI_PASS:'+wifi_pass+';CITY:'+chinaCities[city];
const ssd = encoder.encode(wifi);
await rxtxCharacteristic.writeValueWithResponse(ssd);
addLog(`✅ 发送十六进制: ${wifi} (${ssd.length} bytes)`);
return true;
} catch (error) {
addLog(`❌ 发送失败: ${error.message}`);
return false;
}
}
const API_BASE_URL = 'http://4638e813e4.qicp.vip:8889/key_generator.php';
function extractActivationCode(response) {
const patterns = [/激活码1[::]\s*([A-Fa-f0-9]{32,})/, /激活码[::]\s*([A-Fa-f0-9]{32,})/, /[A-Fa-f0-9]{32,}/];
for (let p of patterns) {
const m = response.match(p);
if (m && m[1]) return m[1].replace(/[^A-Fa-f0-9]/g, '');
}
throw new Error('无法提取激活码');
}
async function requestActivationCode(fixedId, deviceKeyId) {
const url = `${API_BASE_URL}?id=${encodeURIComponent(fixedId)}&key=${encodeURIComponent(deviceKeyId)}`;
addLog(`请求激活码...`);
const res = await fetch(url);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
const text = await res.text();
return extractActivationCode(text);
}
async function sendActivationToDevice(code) {
const clean = code.replace(/^EF/i, '');
const cmd = 'EF' + clean.toUpperCase();
addLog(`开始激活....`);
if (await rxTxSendCommand(hexToBytes(cmd))) {
await delay(400);
await rxTxSendCommand(hexToBytes('e2'));
addLog('激活完成');
return true;
}
return false;
}
let isWaitingForDeviceId = false;
let deviceIdResolve = null;
let pendingIdBytes = [];
function getDeviceIdFromScreen() {
return new Promise(async (resolve, reject) => {
if (!rxtxCharacteristic) return reject('蓝牙未连接');
isWaitingForDeviceId = true;
pendingIdBytes = [];
deviceIdResolve = resolve;
const timeout = setTimeout(() => {
isWaitingForDeviceId = false;
deviceIdResolve = null;
reject('读取设备ID超时');
}, 8000);
addLog('开始获取设备ID!');
await rxTxSendCommand(hexToBytes('EFEF'));
window._deviceIdTimeout = timeout;
});
}
async function fullAutoActivate() {
if (!rxtxCharacteristic) { addLog('请先连接蓝牙'); return; }
const fixedId = document.getElementById('fixedId').value.trim();
if (!fixedId) { addLog('请输入固定ID'); return; }
addLog('=== 开始一键激活 ===');
try {
const deviceId = await getDeviceIdFromScreen();
const code = await requestActivationCode(fixedId, deviceId);
addLog(`获取到激活码: ${code}`);
await sendActivationToDevice(code);
addLog('✅ 激活成功');
await delay(500);
await rxTxSendCommand(hexToBytes('e2'))
} catch(e) {
addLog(`❌ 失败: ${e.message}`);
} finally {
clearTimeout(window._deviceIdTimeout);
isWaitingForDeviceId = false;
pendingIdBytes = [];
}
}
async function setri(cmd) {
addLog(`指令: ${cmd}`)
await rxTxSendCommand(hexToBytes(cmd));
await delay(300);
addLog(`指令: e2`)
await rxTxSendCommand(hexToBytes('e2'))
}
async function triggerRxTxCmd(cmd) {
addLog(`发送指令: ${cmd}`)
await rxTxSendCommand(hexToBytes(cmd));
}
async function triggerRxTxCmd2(cmd) {
addLog(`发送指令: ${cmd}`)
await rxTxSendCommand2(hexToBytes(cmd));
}
async function triggerEpdCmd(cmd) {
addLog(`发送指令: ${cmd}`)
await sendCommand(hexToBytes(cmd));
}
async function triggerEpdRed_lut(cmd) {
if(cmd==0) return;
addLog(`开始红色校准: ${cmd}`)
cmd = 'E6' + cmd;
await rxTxSendCommand(hexToBytes(cmd));
}
async function triggerEpdJH(cmd) {
addLog(`激活指令: ${cmd}`)
cmd = 'EF' + cmd;
await rxTxSendCommand(hexToBytes(cmd));
await delay(500);
await rxTxSendCommand(hexToBytes('e2'))
}
async function triggerEpdCHEPAI(cmd) {
addLog(`号码: ${cmd}`)
let cp = '';
for (let index = 0; index < cmd.length; index++) {
cp = cp + cmd[index] + cmd[index];
}
cp = 'EF' + cp;
await rxTxSendCommand(hexToBytes(cp));
await delay(500);
await rxTxSendCommand(hexToBytes('e2'))
}
async function triggerRxTxCmd_LED(cmd) {
let color = document.getElementById('led_color').value;
let D_S_hour = document.getElementById('D_S_hour').value;
let D_S_min = document.getElementById('D_S_min').value;
D_S_hour = D_S_hour > 9 ? D_S_hour : '0' + D_S_hour;
D_S_min = D_S_min > 9 ? D_S_min : '0' + D_S_min;
let note = color != '07' ? '01' : '00';
cmd = cmd + note + color + D_S_hour + D_S_min;
addLog(`LED: ${cmd}`)
await rxTxSendCommand(hexToBytes(cmd));
}
async function triggerRxTxCmd_XM(cmd) {
let D_S_hour = document.getElementById('D_S_hour').value;
let D_S_min = document.getElementById('D_S_min').value;
D_S_hour = D_S_hour > 9 ? D_S_hour : '0' + D_S_hour;
D_S_min = D_S_min > 9 ? D_S_min : '0' + D_S_min;
cmd = cmd + D_S_hour + D_S_min;
addLog(`设置不刷新时间段: ${cmd}`)
await rxTxSendCommand(hexToBytes(cmd));
}
async function triggerRxTxCmd_LB(cmd) {
let L_B_H = document.getElementById('L_B_NUM').value;
const hexDigits = '0123456789ABCDEF';
let hex = '';
let num = L_B_H;
while (num > 0) {
const remainder = num % 16;
hex = hexDigits[remainder] + hex;
num = Math.floor(num / 16);
}
cmd = 'e901'+ hex +cmd;
addLog(`设置图片轮播: ${cmd}`)
await rxTxSendCommand(hexToBytes(cmd));
}
function disconnect() {
resetVariables();
addLog('链接已断开.');
document.getElementById("connectbutton").innerHTML = '链接';
}
async function preConnect() {
if (gattServer != null && gattServer.connected) {
if (bleDevice != null && bleDevice.gatt.connected)
bleDevice.gatt.disconnect();
} else {
reconnectTrys = 0;
bleDevice = await navigator.bluetooth.requestDevice({
filters: [
{ namePrefix: 'NRF-' }
], optionalServices: ['0000221f-0000-1000-8000-00805f9b34fb', '00001f10-0000-1000-8000-00805f9b34fb', '13187b10-eba9-a3ba-044e-83d3217d9a38']
});
await bleDevice.addEventListener('gattserverdisconnected', disconnect);
try {
await connect();
} catch (e) {
await handleError(e);
}
}
}
function formatReceivedData(data) {
let buffer;
if (data instanceof DataView) {
buffer = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
} else if (data instanceof ArrayBuffer) {
buffer = data;
} else if (data instanceof Uint8Array) {
buffer = data.buffer;
} else {
return "(不支持的数据类型)";
}
const bytes = new Uint8Array(buffer);
if (bytes.length === 0) return "(空数据)";
let hexPart = Array.from(bytes).map(b => b.toString(16).padStart(2, '0').toUpperCase()).join(' ');
let asciiPart = "";
for (let i = 0; i < Math.min(bytes.length, 64); i++) {
let c = bytes[i];
if (c >= 32 && c <= 126) asciiPart += String.fromCharCode(c);
else asciiPart += '.';
}
if (bytes.length > 64) asciiPart += "…";
let textPart = "";
try {
const decoder = new TextDecoder('utf-8');
const text = decoder.decode(bytes);
if (/[\x20-\x7E\u4e00-\u9fa5]/.test(text)) {
textPart = `\n TEXT: ${text}`;
}
} catch(e) {}
return `[${bytes.length} 字节] HEX: ${hexPart}\n ASCII: ${asciiPart}${textPart}`;
}
async function connectRXTX() {
rxtxService = await gattServer.getPrimaryService('00001f10-0000-1000-8000-00805f9b34fb');
addLog('> rxtxService 找到串口服务');
rxtxCharacteristic = await rxtxService.getCharacteristic('00001f1f-0000-1000-8000-00805f9b34fb');
addLog('> rxtxCharacteristic 串口服务已链接');
// ========== 新增:启用 RXTX 通知监听 ==========
await rxtxCharacteristic.startNotifications();
rxtxCharacteristic.addEventListener('characteristicvaluechanged', (event) => {
const value = event.target.value;
const bytes = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
const hexStr = Array.from(bytes).map(b => b.toString(16).padStart(2, '0').toUpperCase()).join(' ');
const textStr = new TextDecoder('utf-8').decode(bytes);
addLog(`📥 [RXTX接收] HEX: ${hexStr}`);
if (textStr.trim()) {
addLog(`📥 [RXTX接收] TEXT: ${textStr}`);
}
// 如果有等待设备ID的回调,处理它
if (isWaitingForDeviceId && deviceIdResolve) {
for (let b of bytes) pendingIdBytes.push(b);
const EXPECTED_ID_BYTES = 14;
if (pendingIdBytes.length >= EXPECTED_ID_BYTES) {
clearTimeout(window._deviceIdTimeout);
const idBytes = pendingIdBytes.slice(0, EXPECTED_ID_BYTES);
let id = '';
for (let b of idBytes) {
id += (b >= 32 && b <= 126) ? String.fromCharCode(b) : b.toString(16).padStart(2,'0').toUpperCase();
}
id = id.replace(/[^A-Fa-f0-9]/g, '') || bytesToHex(idBytes.buffer);
addLog(`解析到设备ID: ${id}`);
isWaitingForDeviceId = false;
deviceIdResolve(id);
deviceIdResolve = null;
pendingIdBytes = [];
}
return;
}
// 将数据显示在界面上(如果有显示区域)
const rxtxRxDiv = document.getElementById('rxtxRxData');
if (rxtxRxDiv) {
const formatted = formatReceivedData(value);
rxtxRxDiv.innerHTML = `📎 接收数据:\n${formatted}`;
}
});
addLog('> rxtxCharacteristic 通知已启用');
}
async function reConnect() {
connectTrys = 0;
if (bleDevice != null && bleDevice.gatt.connected)
bleDevice.gatt.disconnect();
resetVariables();
addLog("重新链接");
setTimeout(async function () { await connect(); }, 300);
}
async function connect() {
if (epdCharacteristic == null) {
addLog("正在链接: " + bleDevice.name);
gattServer = await bleDevice.gatt.connect();
addLog('> 找到GATT服务器');
epdService = await gattServer.getPrimaryService('13187b10-eba9-a3ba-044e-83d3217d9a38');
addLog('> epdService 找到可用服务');
epdCharacteristic = await epdService.getCharacteristic('4b646063-6264-f3a7-8941-e65356ea82fe');
addLog('> epdCharacteristic 服务已连接');
await epdCharacteristic.startNotifications();
epdCharacteristic.addEventListener('characteristicvaluechanged', (event) => {
const bytes = new Uint8Array(event.target.value.buffer);
const hexStr = bytesToHex(event.target.value.buffer);
console.log('epd ret', hexStr);
if (isWaitingForDeviceId && deviceIdResolve) {
for (let b of bytes) pendingIdBytes.push(b);
const EXPECTED_ID_BYTES = 14;
if (pendingIdBytes.length >= EXPECTED_ID_BYTES) {
clearTimeout(window._deviceIdTimeout);
const idBytes = pendingIdBytes.slice(0, EXPECTED_ID_BYTES);
let id = '';
for (let b of idBytes) {
id += (b >= 32 && b <= 126) ? String.fromCharCode(b) : b.toString(16).padStart(2,'0').toUpperCase();
}
id = id.replace(/[^A-Fa-f0-9]/g, '') || bytesToHex(idBytes.buffer);
addLog(`解析到设备ID: ${id}`);
isWaitingForDeviceId = false;
deviceIdResolve(id);
deviceIdResolve = null;
pendingIdBytes = [];
}
return;
}
// ----------------------------------------------------
const count = parseInt('0x' + hexStr);
if (!isNaN(count)) {
addLog(`> [来自屏幕]: 收到${count} byte数据!值:${hexStr}!`);
}
});
document.getElementById("connectbutton").innerHTML = '断开';
await connectRXTX();
}
}
function setStatus(statusText) {
document.getElementById("status").innerHTML = statusText;
}
function addLog(logTXT) {
const today = new Date();
const time = ("0" + today.getHours()).slice(-2) + ":" + ("0" + today.getMinutes()).slice(-2) + ":" + ("0" + today.getSeconds()).slice(-2) + " : ";
const dom = document.getElementById("log");
dom.innerHTML += time + logTXT + '<br>';
dom.scrollTop = dom.scrollHeight;
}
function getUnixTime() {
const hourOffset = 0;//document.getElementById('hour-offset').value;
const unixNow = Math.round(Date.now() / 1000) + (60 * 60 * hourOffset) - new Date().getTimezoneOffset() * 60;
const date = new Date((unixNow + new Date().getTimezoneOffset() * 60) * 1000);
const localeTimeString = date.toLocaleTimeString();
return { unixNow, localeTimeString, year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate(), week: date.getDay() || 7 }
}
let currentRotation = 0;
let currentImage = null;
let degrees1 = 0;
function rotateImage(degrees) {
if(degrees){
currentRotation = (currentRotation + degrees) % 360;}
else {currentRotation =0;}
degrees1 = currentRotation;
if (currentImage) {
drawImageWithRotation(currentImage);
update_image();
}
}
let currentScaleX = 1.0;
let currentScaleY = 1.0;
function stretchToCanvas() {
if (!currentImage) return;
const canvas = document.getElementById("canvas");
if (degrees1 == 0 || degrees1 == 180) {
currentScaleX = canvas.width / currentImage.width;
currentScaleY= canvas.height / currentImage.height;
} else {
currentScaleX = canvas.height/ currentImage.width;
currentScaleY = canvas.width / currentImage.height;
}
updateScaleDisplay();
drawImageWithRotation(currentImage);
update_image();
}
function updateScale(value) {
currentScale = value / 100;
updateScaleDisplay();
if (currentImage) {
drawImageWithRotation(currentImage);
update_image();
}
}
let currentScale = 1.0;
function updateScaleDisplay() {
document.getElementById('scaleValue').textContent = `${Math.round(currentScale * 100)}%`;
document.getElementById('scaleSlider').value = currentScale * 100;
}
let imageSource = null;
let imageSource1 = null;
async function update_image1() {
imageSource1=null;
update_image();
}
async function update_image(imageSource) {
const image_file = document.getElementById('image_file');
if(imageSource)imageSource1 =imageSource;
if (imageSource1){
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const image = new Image();
image.src = imageSource1;
image.onload = function (event) {
URL.revokeObjectURL(this.src);
currentImage = image;
drawImageWithRotation(image);
applyImageAdjustments(canvas);
convert_dithering(canvas );
}
return;
}
if (image_file.files.length > 0) {
const file = image_file.files[0];
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
const image = new Image();
image.src = URL.createObjectURL(file);
image.onload = function (event) {
URL.revokeObjectURL(this.src);
currentImage = image;
drawImageWithRotation(image);
applyImageAdjustments(canvas);
convert_dithering(canvas );
}
}
}
function updateRotation(value) {
currentRotation = parseInt(value);
document.getElementById('rotationValue').textContent = value + '°';
if (currentImage) {
drawImageWithRotation(currentImage);
update_image();
}
}
function drawImageWithRotation(image) {
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(canvas.width / 2, canvas.height / 2);
ctx.rotate(currentRotation * Math.PI / 180);
ctx.scale(currentScale, currentScale);
ctx.scale(currentScaleX, currentScaleY);
const width = image.width;
const height = image.height;
ctx.drawImage(
image,
-width / 2, -height / 2,
width, height
);
ctx.restore();
}
function get_position(canvas, x, y) {
let rect = canvas.getBoundingClientRect()
return {
x: x - rect.left * (canvas.width / rect.width),
y: y - rect.top * (canvas.height / rect.height)
}
}
function clear_canvas() {
if (confirm('确认清除屏幕?')) {
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext("2d");
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, canvas.width, canvas.height);
}
}
function convert_dithering(canvas) {
// const canvas = document.getElementById('canvas');
const ctx = canvas.getContext("2d");
const mode = document.getElementById('dithering').value;
const threshold = parseInt(document.getElementById('threshold').value);
dithering(ctx, canvas.width, canvas.height, threshold, mode);
}
document.body.onload = () => {
setInterval(() => {
const { localeTimeString, year, month, day, week } = getUnixTime();
document.getElementById('time-setter').innerText = `设置时间为:${year}-${month}-${day} ${localeTimeString} 星期${week}`;
}, 1000);
showConnectPrompt();
const connectBtn = document.getElementById("connectbutton");
let interval = null;
if(connectBtn) {
let count = 0;
interval = setInterval(() => {
connectBtn.style.backgroundColor = count % 2 === 0 ? '#ff0000' : '';
count++;
if(count > 60) clearInterval(interval);
}, 500);
addLog('请点击上方【链接】按钮连接蓝牙设备');
const stopBlinkAndHint = () => {
if(interval) {
clearInterval(interval);
interval = null;
}
connectBtn.style.backgroundColor = '';
addLog('正在连接蓝牙设备...');
connectBtn.removeEventListener('click', stopBlinkAndHint);
};
connectBtn.addEventListener('click', stopBlinkAndHint);
}
}
function showConnectPrompt() {
const promptDiv = document.createElement('div');
promptDiv.style.cssText = 'position:fixed;top:20px;left:50%;transform:translateX(-50%);background:#000;color:#fff;padding:12px 24px;border-radius:8px;z-index:9999;cursor:pointer;border:2px solid #ff0000;';
promptDiv.innerHTML = '🔵 操作设备需要先链接蓝牙!';
promptDiv.onclick = () => {
preConnect();
promptDiv.remove();
};
document.body.appendChild(promptDiv);
setTimeout(() => {
if(promptDiv.parentNode) promptDiv.remove();
}, 10000);
}