#
mrzhssss
2022-09-22 110f3977b399dd117ce1af49ca792d602e2ba9a9
#
244个文件已添加
1个文件已修改
43419 ■■■■■ 已修改文件
src/main/webapp/static/js/console.map.js 308 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS.sln 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS.suo 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS.v11.suo 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/BarcodeThread.cs 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Common.cs 3067 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/CraneThread.cs 1810 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/DLL.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form1.Designer.cs 10276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form1.cs 5091 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form1.resx 5050 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form2.Designer.cs 1020 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form2.cs 567 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form2.resx 265 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form3.Designer.cs 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form3.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form3.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form4.Designer.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form4.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Form4.resx 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/HttpPostHelper.cs 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/LedThread.cs 3592 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/PlcAThread.cs 1435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/PlcBThread.cs 1128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Program.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Properties/AssemblyInfo.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Properties/Resources.Designer.cs 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Properties/Resources.resx 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Properties/Settings.Designer.cs 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/Properties/Settings.settings 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/ScaleComThread.cs 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/ScaleTcpThread.cs 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/System Tools XP.ico 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/UpdateThread.cs 1732 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/WCS.csproj 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/WCS.csproj.user 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/WcsUpdate.cs 567 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/app.config 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/BX_IV.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/CSkin.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/DevComponents.DotNetBar.SuperGrid.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/DevComponents.DotNetBar2.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/HslCommunication.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/ListenPlayDll2014.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/ListenTechMT.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/Microscan.SDK-1.0.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/Oracle.ManagedDataAccess.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/Sharp7Library.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/System Tools XP.ico 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/System.ini 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/WCS.exe 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/WCS.exe.config 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/WCS.pdb 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/WCS.vshost.exe 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/WCS.vshost.exe.config 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/WCS.vshost.exe.manifest 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/com.force.json.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/data/led1_area1.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/data/led1_area2.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/data/led2_area1.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/data/led2_area2.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/data/led3_area1.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/data/led3_area2.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/data/led4_area1.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/data/led4_area2.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/CRN.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_auto.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_error.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_hptoohp.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_loctoloc.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_manual.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_retrieve.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_stntostn.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_store.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/ERROR.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Graph2D.jpg 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Graph3D.jpg 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/GraphOther.jpg 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/JavaCup.ico 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/MAP.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/PLC.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/System Tools XP.ico 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/Warcraft [F].ico 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/add.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/back.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/barcode.jpg 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/bscanner.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/cacl.GIF 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/cancel.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/chache11.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/chache33.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/close.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/close.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/cloud.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/collapse.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/computer.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/computer1.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/computer2.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/computer3.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/confer.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/control.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/copy.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/crnmap.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/delete.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/edit.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/enlarge.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/err.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/excel.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/exit.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/exit.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/expand.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/first.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/flash.wav 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/fork_l.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/fork_r.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/grant.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/grgallry.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/h_line.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/help.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/image.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/info.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/last.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/loading.gif 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/lock.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/login1.jpg 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/main.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/man.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/modify.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/msg.wav 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/newh.gif 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/next.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/notebook.GIF 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/open.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/paste.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/people.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/pic_choose.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/prev.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/print.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/printer.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/question.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/reduce.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/retrieve.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/right.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/s_line.bmp 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/save.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/scanner.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/search.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/set.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/setting.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta1.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_b.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_conv.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_l.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_lr.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_r.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_sj.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_sj0.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_sj1.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_t.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/sta_tb.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/stack.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/start48.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/start48_1.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/stop48.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/stop48_1.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/timer.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/top.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/top.swf 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/uninstall.ico 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/use.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/user.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/user1.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/warn.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/woman.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/word.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/wrkgrm.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/全屏.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/取消全屏.png 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/复件 sta_sj0.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/image/复件 stack.PNG 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/json/CDWCS.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/json/STWCS.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/listen.dat 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/message.ini 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/microsoft.visualbasic.powerpacks.vs.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/onbon.api.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Debug/timerlabel.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Release/@public.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Release/@public.pdb 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Release/WCS.exe 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/bin/Release/WCS.pdb 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/crndisplay.Designer.cs 420 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/crndisplay.cs 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/crndisplay.resx 451 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/exit.Designer.cs 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/exit.cs 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/exit.resx 451 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/DesignTimeResolveAssemblyReferences.cache 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/ResolveAssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.Form2.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.Form3.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.Form4.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.Properties.Resources.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.crndisplay.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.csproj.FileListAbsolute.txt 557 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.csproj.GenerateResource.Cache 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.csprojResolveAssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.exe 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.exit.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.main.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.pdb 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.plcset.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.stndisplay.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.warn.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Debug/WCS.warn1.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/ResolveAssemblyReference.cache 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/TempPE/Properties.Resources.Designer.cs.dll 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.Properties.Resources.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.crndisplay.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.csproj.FileListAbsolute.txt 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.csproj.GenerateResource.Cache 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.exe 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.main.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.pdb 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.plcset.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.stndisplay.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.warn.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/obj/Release/WCS.warn1.resources 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/plcset.Designer.cs 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/plcset.cs 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/plcset.resx 546 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/stndisplay.Designer.cs 406 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/stndisplay.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/stndisplay.resx 451 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/warn.Designer.cs 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/warn.cs 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/warn.resx 451 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/warn1.Designer.cs 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/warn1.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/STWCSMapEditor/WCS/warn1.resx 451 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/console.map.js
@@ -10,160 +10,160 @@
        {
            "type":"rack",
            "id":"rack4",
            "top":737,
            "left":419,
            "top":549,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack1",
            "top":855,
            "left":419,
            "top":642,
            "left":413,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack2",
            "top":827,
            "left":419,
            "top":619,
            "left":413,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack3",
            "top":765,
            "left":419,
            "top":571,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack8",
            "top":561,
            "left":419,
            "top":435,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack5",
            "top":679,
            "left":419,
            "top":527,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack6",
            "top":651,
            "left":419,
            "top":505,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack7",
            "top":589,
            "left":419,
            "top":457,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack12",
            "top":415,
            "left":419,
            "top":322,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack9",
            "top":533,
            "left":419,
            "top":413,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack10",
            "top":505,
            "left":419,
            "top":391,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack11",
            "top":443,
            "left":419,
            "top":344,
            "left":412,
            "width":846,
            "height":24,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack13",
            "top":387,
            "left":419,
            "width":846,
            "height":24,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack14",
            "top":359,
            "left":419,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack16",
            "top":269,
            "left":419,
            "top":206,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack13",
            "top":300,
            "left":412,
            "width":846,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack15",
            "top":297,
            "left":419,
            "top":228,
            "left":412,
            "width":846,
            "height":24,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        },
        {
            "type":"rack",
            "id":"rack14",
            "top":278,
            "left":412,
            "width":846,
            "height":20,
            "minBayNo":2,
            "maxBayNo":31
        }
@@ -173,8 +173,8 @@
            "type":"rackDescs",
            "id":"lb_desc16",
            "text":"#1",
            "top":881,
            "left":1181,
            "top":664,
            "left":1228,
            "width":30,
            "height":23
        },
@@ -182,8 +182,8 @@
            "type":"rackDescs",
            "id":"lb_desc1",
            "text":"#16",
            "top":244,
            "left":1157,
            "top":181,
            "left":1217,
            "width":41,
            "height":23
        }
@@ -193,8 +193,8 @@
            "type":"crane",
            "id":"crn-4",
            "text":"4",
            "top":326,
            "left":508,
            "top":252,
            "left":501,
            "width":93,
            "height":22
        },
@@ -202,17 +202,17 @@
            "type":"track",
            "id":"lb_track1",
            "text":"",
            "top":806,
            "left":301,
            "width":1004,
            "top":605,
            "left":332,
            "width":971,
            "height":2
        },
        {
            "type":"crane",
            "id":"crn-3",
            "text":"3",
            "top":475,
            "left":508,
            "top":367,
            "left":512,
            "width":93,
            "height":22
        },
@@ -220,17 +220,17 @@
            "type":"track",
            "id":"lb_track2",
            "text":"",
            "top":630,
            "left":301,
            "width":1004,
            "top":489,
            "left":332,
            "width":972,
            "height":2
        },
        {
            "type":"crane",
            "id":"crn-2",
            "text":"2",
            "top":618,
            "left":508,
            "top":481,
            "left":501,
            "width":93,
            "height":22
        },
@@ -238,28 +238,28 @@
            "type":"track",
            "id":"lb_track5",
            "text":"",
            "top":484,
            "left":301,
            "width":1004,
            "top":376,
            "left":333,
            "width":974,
            "height":2
        },
        {
            "type":"track",
            "id":"lb_track4",
            "text":"",
            "top":260,
            "left":335,
            "width":975,
            "height":2
        },
        {
            "type":"crane",
            "id":"crn-1",
            "text":"1",
            "top":796,
            "left":508,
            "top":595,
            "left":501,
            "width":93,
            "height":22
        },
        {
            "type":"track",
            "id":"lb_track4",
            "text":"",
            "top":338,
            "left":301,
            "width":1004,
            "height":2
        }
    ],
    "areas":[
@@ -267,10 +267,10 @@
            "type":"Control_floor",
            "id":"tabControl_floor1",
            "text":"楼层",
            "top":67,
            "left":156,
            "width":1493,
            "height":1048,
            "top":68,
            "left":80,
            "width":1275,
            "height":910,
            "floors":[
                {
                    "type":"floor",
@@ -278,170 +278,170 @@
                    "text":"1F",
                    "top":4,
                    "left":22,
                    "width":1467,
                    "height":1040,
                    "width":1249,
                    "height":902,
                    "stns":[
                        {
                            "type":"track",
                            "id":"lb_trCart21",
                            "text":"",
                            "top":129,
                            "left":232,
                            "width":10,
                            "height":775
                            "top":93,
                            "left":243,
                            "width":6,
                            "height":569
                        },
                        {
                            "type":"track",
                            "id":"lb_trCart22",
                            "text":"",
                            "top":129,
                            "left":270,
                            "width":10,
                            "height":775
                            "top":93,
                            "left":297,
                            "width":6,
                            "height":569
                        },
                        {
                            "type":"stn",
                            "id":"site-016",
                            "text":"016",
                            "top":505,
                            "left":217,
                            "top":457,
                            "left":239,
                            "width":69,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-015",
                            "text":"015",
                            "top":129,
                            "left":314,
                            "top":93,
                            "left":310,
                            "width":100,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-014",
                            "text":"014",
                            "top":129,
                            "left":420,
                            "top":93,
                            "left":413,
                            "width":92,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-013",
                            "text":"013",
                            "top":154,
                            "left":420,
                            "top":115,
                            "left":413,
                            "width":92,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-012",
                            "text":"012",
                            "top":179,
                            "left":420,
                            "top":138,
                            "left":413,
                            "width":92,
                            "height":38
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-011",
                            "text":"011",
                            "top":218,
                            "left":420,
                            "top":160,
                            "left":413,
                            "width":92,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-010",
                            "text":"010",
                            "top":243,
                            "left":420,
                            "top":183,
                            "left":413,
                            "width":92,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-009",
                            "text":"009",
                            "top":243,
                            "left":314,
                            "top":183,
                            "left":310,
                            "width":100,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-008",
                            "text":"008",
                            "top":297,
                            "left":314,
                            "top":228,
                            "left":310,
                            "width":100,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-007",
                            "text":"007",
                            "top":362,
                            "left":314,
                            "top":278,
                            "left":311,
                            "width":100,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-006",
                            "text":"006",
                            "top":443,
                            "left":314,
                            "top":344,
                            "left":311,
                            "width":100,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-005",
                            "text":"005",
                            "top":505,
                            "left":314,
                            "top":391,
                            "left":311,
                            "width":100,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-004",
                            "text":"004",
                            "top":589,
                            "left":314,
                            "top":457,
                            "left":311,
                            "width":100,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-003",
                            "text":"003",
                            "top":651,
                            "left":314,
                            "top":505,
                            "left":311,
                            "width":100,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-002",
                            "text":"002",
                            "top":765,
                            "left":314,
                            "top":571,
                            "left":311,
                            "width":100,
                            "height":24
                            "height":20
                        },
                        {
                            "type":"stn",
                            "id":"site-001",
                            "text":"001",
                            "top":827,
                            "left":314,
                            "top":619,
                            "left":311,
                            "width":100,
                            "height":24
                            "height":20
                        }
                    ]
                }
version/STWCSMapEditor/WCS.sln
New file
@@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WCS", "WCS\WCS.csproj", "{9E1CF5D3-6566-4636-AE12-C837971242CA}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {9E1CF5D3-6566-4636-AE12-C837971242CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {9E1CF5D3-6566-4636-AE12-C837971242CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {9E1CF5D3-6566-4636-AE12-C837971242CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {9E1CF5D3-6566-4636-AE12-C837971242CA}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
EndGlobal
version/STWCSMapEditor/WCS.suo
Binary files differ
version/STWCSMapEditor/WCS.v11.suo
Binary files differ
version/STWCSMapEditor/WCS/BarcodeThread.cs
New file
@@ -0,0 +1,286 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using DevComponents.DotNetBar;
namespace WCS
{
    /// <summary>
    /// æ¡ç çº¿ç¨‹
    /// </summary>
    class BarcodeThread
    {
        #region ç”»é¢ä¸ŠåŒæ­¥æ˜¾ç¤ºæŽ§ä»¶
        public ListBox barcodedisplay;
        public LabelX lb_barcode;
        delegate void displayresponse(string text);
        delegate void SetTextCallback(string barcode);
        #endregion
        Thread trd = null;
        string barcodeip = "";
        int barcodeno = 0;
        int portno = 0;
        //int i = 1;
        //int scaleno = 0;
        main form1;
        private IPEndPoint ServerInfo;
        private Socket socket;
        private Byte[] MsgBuffer = new Byte[65535];
        private Byte[] MsgSend = new Byte[65535];
        public BarcodeThread(int barcode_no, string barcode_ip, int port, main f)
        {
            try
            {
                barcodeno = barcode_no;
                barcodeip = barcode_ip;
                this.portno = port;
                form1 = f;
                //MsgBuffer = new Byte[65535];
                //MsgSend = new Byte[65535];
                trd = new Thread(new ThreadStart(this.ThreadTask));
                trd.IsBackground = true;
                trd.Start();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "BarcodeThread/BarcodeThread--条码线程启动出错:" + em.Message);
            }
        }
        #region socket连接
        /// <summary>
        /// socket连接WMS服务器
        /// </summary>
        private void SocketConnect()
        {
            ServerInfo = new IPEndPoint(IPAddress.Parse(barcodeip), portno);
            try
            {
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket.Connect(ServerInfo);
                //Int32 bytes = socket.Receive(MsgBuffer, MsgBuffer.Length, SocketFlags.None);
                //StringBuilder buff = new StringBuilder();
                //String receiveData = Encoding.UTF8.GetString(MsgBuffer, 0, bytes);
                //socket.Send(Encoding.Unicode.GetBytes("socket connect!"));
                //RecevieData = "s";
                //socket.BeginReceive(MsgBuffer, 0, MsgBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null);
                DisplayInfo("【" + DateTime.Now.ToString() + "】读取条码数据...");
            }
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】条码连接失败!" + em.Message);
                Common.WriteLogFile("WcsError", "BarcodeThread/SocketConnect--条码连接失败:" + em.Message);
            }
        }
        /// <summary>
        /// socket重新连接WMS服务器
        /// </summary>
        private void SocketReConnect()
        {
            if (socket.Connected)
            {
                socket.Close();
            }
            Thread.Sleep(100);
            SocketConnect();
        }
        /// <summary>
        /// åˆ¤æ–­socket是否已连接
        /// </summary>
        /// <returns></returns>
        private bool checkSocket()
        {
            bool ret = true;
            bool isConnected = false;
            bool isRead = false;
            bool isWrite = false;
            bool isError = false;
            int avalSize = 0;
            try
            {
                isConnected = socket.Connected;
                isRead = socket.Poll(50, SelectMode.SelectRead);
                avalSize = socket.Available;
                isWrite = socket.Poll(50, SelectMode.SelectWrite);
                isError = socket.Poll(50, SelectMode.SelectError);
                if (isConnected == false || isError == true || (isRead == true && avalSize == 0))
                {
                    ret = false;
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "BarcodeThread/checkSocket--判断条码是否连接失败:" + em.Message);
                ret = false;
            }
            return ret;
        }
        #endregion
        /// <summary>
        /// èŽ·å–æ¡ç æ‰«æå™¨æ•°æ®å¹¶è§£æž
        /// </summary>
        private void GetBarcodeData()
        {
            string dataValue = "P", s_RecStr = "";
            double d_RecStr = 0;
            try
            {
                if (checkSocket() == false)
                {
                    //调用重连
                    //Common.gs_barcode_data[barcodeno - 1] = "";
                    //DisplayInfo("【" + DateTime.Now.ToString() + "】条码连接已断开,重连...");
                    SocketReConnect();
                    return;
                }
                MsgSend = Encoding.UTF8.GetBytes(dataValue);
                if (socket.Connected)
                {
                    // å‘主机发送数据.
                    socket.Send(MsgSend, MsgSend.Length, SocketFlags.None);
                    //socket.Send(MsgSend);
                    //DisplayInfo("发送信息:" + dataValue);
                    //RecevieData = "";
                    // æŽ¥æ”¶ä¸»æœºåº”ç­”
                    socket.ReceiveTimeout = 60000;
                    Int32 bytes = socket.Receive(MsgBuffer, MsgBuffer.Length, SocketFlags.None);
                    StringBuilder buff = new StringBuilder();
                    if (bytes > 0)
                    {
                        // å°†ç¼“冲的字节数组,装换为字符串.
                        // String receiveData = Encoding.ASCII.GetString(MsgBuffer, 0, bytes);
                        s_RecStr = Encoding.ASCII.GetString(MsgBuffer, 0, bytes);
                        s_RecStr = s_RecStr.Trim('');
                        if (s_RecStr.IndexOf("NOREAD") >= 0)// || (s_RecStr.Length < 7 && s_RecStr.Length > 0))
                        {
                            //Common.gs_barcode_data[barcodeno - 1] = "";
                            DisplayInfo("【" + DateTime.Now.ToString() + "】条码返回信息:" + s_RecStr);
                            return;
                        }
                        if (s_RecStr.Length < 7)
                        {
                            return;
                        }
                        s_RecStr = s_RecStr.Substring(0, 7);
                        Common.gs_barcode_data[barcodeno - 1] = s_RecStr;
                        //DisplayBarcode(Common.gs_barcode_data[barcodeno - 1]);
                        DisplayInfo("【" + DateTime.Now.ToString() + "】" + Common.gs_barcode_data[barcodeno - 1]);
                        //DisplayInfo("收到消息:" + receiveData);
                        // AnalysisReceive(receiveData);   //解析收到的数据
                        // åŠ å…¥å­—ç¬¦ä¸²ç¼“å­˜
                        //buff.Append(str);
                        // å†æ¬¡æŽ¥å—,看看后面还有没有数据.
                    }
                }
                else
                {
                    //Common.gs_barcode_data[barcodeno - 1] = "";
                    DisplayInfo("【" + DateTime.Now.ToString() + "】条码连接已断开,无法读取数据!");
                }
                return;
            }
            catch(Exception em)
            {
                Common.WriteLogFile("WcsError", "BarcodeThread/GetBarcodeData--读取条码数据失败:" + em.Message);
                //Common.gs_barcode_data[barcodeno - 1] = "";
                //DisplayInfo("【" + DateTime.Now.ToString() + "】扫描超时:" + t.Message);
                //Thread.Sleep(400);
                return;
            }
        }
        #region é€šè®¯åé¦ˆåŒæ­¥æ˜¾ç¤º
        /// <summary>
        /// æ˜¾ç¤ºæ¡ç é€šè®¯ä¿¡æ¯
        /// </summary>
        /// <param name="text"></param>
        private void DisplayInfo(string text)
        {
            if (barcodedisplay == null)
            {
                return;
            }
            if (barcodedisplay.InvokeRequired)
            {
                try
                {
                    displayresponse d = new displayresponse(DisplayInfo);
                    barcodedisplay.Invoke(d, new object[] { text });
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "BarcodeThread/DisplayInfo--同步显示条码通讯信息失败:" + em.Message);
                }
            }
            else
            {
                if (barcodedisplay.Items.Count > 12)
                {
                    barcodedisplay.Items.Clear();
                }
                barcodedisplay.Items.Add(text);
            }
        }
        /// <summary>
        /// æ˜¾ç¤ºæ¡ç å·
        /// </summary>
        /// <param name="text"></param>
        private void DisplayBarcode(string barcode)
        {
            if (lb_barcode == null)
            {
                return;
            }
            if (lb_barcode.InvokeRequired)
            {
                try
                {
                    SetTextCallback d = new SetTextCallback(DisplayBarcode);
                    lb_barcode.Invoke(d, new object[] { barcode });
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "BarcodeThread/DisplayBarcode--同步显示条码号失败:" + em.Message);
                }
            }
            else
            {
                lb_barcode.Text = barcode;
            }
        }
        #endregion
        /// <summary>
        /// æ¡ç ä¸»çº¿ç¨‹
        /// </summary>
        private void ThreadTask()
        {
            SocketConnect();
            while (true)
            {
                GetBarcodeData();
                Thread.Sleep(Common.ci_BarcodetimeInterval);
            }
        }
    }
}
version/STWCSMapEditor/WCS/Common.cs
New file
@@ -0,0 +1,3067 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Data.SqlClient;
using System.Collections;
using System.IO;
using com.force.json;
using System.Net;
using System.Net.NetworkInformation;
using Oracle.ManagedDataAccess.Client;
namespace WCS
{
    public class Common
    {
        /// <summary>
        /// ç³»ç»Ÿè·¯å¾„
        /// </summary>
        public static string filepath = System.Reflection.Assembly.GetExecutingAssembly().Location;
        //public static string exepath = Application.ExecutablePath;
        //public static string path = filepath.Substring(0, filepath.LastIndexOf('\\'));
        /// <summary>
        /// ç³»ç»Ÿé…ç½®æ–‡ä»¶
        /// </summary>
        public static string sysinipath = filepath.Substring(0, filepath.LastIndexOf('\\')) + "\\System.ini";
        //public static string cmdinipath = filepath.Substring(0, filepath.LastIndexOf('\\')) + "\\Command.ini";
        //public static string inipath = filepath.Substring(0, filepath.LastIndexOf('\\')) + "\\labels\\";
        //public static string pbdpath = filepath.Substring(0, filepath.LastIndexOf('\\')) + "\\report.pbd";
        /// <summary>
        /// å…¬å¸åç§°
        /// </summary>
        public static string gs_companyName = "";
        /// <summary>
        /// ç³»ç»Ÿå›¾ç‰‡è·¯å¾„
        /// </summary>
        public static string picpath = filepath.Substring(0, filepath.LastIndexOf('\\')) + "\\image\\";
        /// <summary>
        /// ç³»ç»Ÿä¿¡å·ï¼Œå¼¹å‡ºæç¤ºæ¡†åŽæ ¹æ®é€‰æ‹©ä¼ å€¼å›žä¸»çª—口,后期考虑窗口间传参
        /// </summary>
        public static bool sysinfo = false;
        //public static bool logout = false;
        //public static bool sameinfo = false;
        /// <summary>
        /// ASRS数据库连接字符串
        /// </summary>
        public static string sqlcon = "Initial Catalog=klsasrs2;Persist Security Info=True;User ID=sa;Password=sa@123;";
        //public static string sqlcon = "Initial Catalog=jsasrs;Persist Security Info=True;User ID=;Password=klsasrs@zy;";
        /// <summary>
        /// ERP数据库连接字符串
        /// </summary>
        public static string erpcon = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=dm01db01-vip.dssyebs.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME = PROD)));User Id=HSTORE;Password=HSTORE;";
        /// <summary>
        /// æ•°æ®åº“服务器IP
        /// </summary>
        public static string serverIp = "127.0.0.1";
        /// <summary>
        /// WMS接口
        /// </summary>
        public static string HttpUrl = "";
        //public static string servername = ".";
        //public static string login = "asrs";
        //public static string psw = "asrs";
        //public static int crnwriteadd = 80;
        /// <summary>
        /// å®šä¹‰FORM窗体f1
        /// </summary>
        public static Form f1 = null;
        /// <summary>
        /// å †åž›æœºæ•°é‡
        /// </summary>
        public static int ci_crn_count = 3;
        /// <summary>
        /// ç«™ç‚¹æ•°é‡
        /// </summary>
        public static int ci_sta_count = 36;
        /// <summary>
        /// PLC数量
        /// </summary>
        public static int ci_plc_count = 1;
        /// <summary>
        /// ç£…秤数量
        /// </summary>
        public static int ci_scale_count = 1;
        /// <summary>
        /// æ¡ç æ‰«æå™¨æ•°é‡
        /// </summary>
        public static int ci_barcode_count = 1;
        /// <summary>
        /// LED显示屏
        /// </summary>
        public static int ci_led_count = 5;
        /// <summary>
        /// å°è½¦æ•°é‡
        /// </summary>
        public static int ci_rgv_count = 0;
        /// <summary>
        /// WCS服务器Socket IP
        /// </summary>
        public static string gs_wcs_ip = "";
        /// <summary>
        /// WCS服务器Socket端口
        /// </summary>
        public static int gs_wcs_port = 10001;
        //public static int ci_plc_error_count = 7;// 91;
        /// <summary>
        /// ç«™ç‚¹é”™è¯¯æ•°
        /// </summary>
        public static int ci_plcerrcount = 100;
        public static string[] plcerr;// = new string[ci_plcerrcount];
        public static string[] gs_PlcErrDesc;// = new string[ci_plcerrcount];
        //public static int ci_plcerrrecord = 30;
        //public static int[] gi_plc_err = new int[ci_plcerrrecord];
        /// <summary>
        /// S7写数据到西门子PLC互锁标志,同一时间只允许一个写入
        /// </summary>
        public static bool writeFlag = true;
        /// <summary>
        /// ç£…秤重量上限
        /// </summary>
        public static double ci_scale_maxwt = 1000;
        /// <summary>
        /// ç£…秤重量下限
        /// </summary>
        public static double ci_scale_minwt = 30;
        /// <summary>
        /// å †åž›æœºå…¥åº“站站点编号数组
        /// </summary>
        public static int[] crn_inStns = new int[8] { 104,106,117,120,124,131,133,136 };
        /// <summary>
        /// å †åž›æœºå‡ºåº“站站点编号数组
        /// </summary>
        public static int[] crn_outStns = new int[4] { 101,110, 113,127 };
        //public static bool[] plctag = new bool[2];
        //public static bool[] stasts = new bool[16];
        //public static bool[] stasts1 = new bool[4];
        //public static int[] gi_wrkno_pick = new int[5];
        //public static string[] gi_sts=new string[4];
        #region å¸¸é‡å®šä¹‰åŒº
        //堆垛机内部状态参数状态字
        public static long ch_crn_sdms = 1;         //手动模式
        public static long ch_crn_zdms = 2;         //自动模式
        public static long ch_crn_dnms = 4;         //电脑模式
        public static long ch_crn_sdz = 8;          //手动中
        public static long ch_crn_zdz = 16;         //自动中
        public static long ch_crn_dnmsz = 32;       //电脑模式中
        public static long ch_crn_jt = 64;          //急停
        public static long ch_crn_yc = 128;         //异常
        public static long ch_crn_dndmz = 256;      //电脑待命中
        public static long ch_crn_dnmljs = 512;     //电脑命令正确接收
        public static long ch_crn_rkz = 1024;       //入库中
        public static long ch_crn_ckz = 2048;       //出库中
        public static long ch_crn_kdkz = 4096;      //库对库中
        public static long ch_crn_zdzz = 8192;      //站对站中
        public static long ch_crn_yxz = 16384;      //移行中
        public static long ch_crn_dcqhjd = 32768;   //堆垛机取货阶段
        // {CRN STATUS2}
        public static long ch_crn_dcfhjd = 1;       //堆垛机放货阶段
        public static long ch_crn_dckx = 2;         //堆垛机空闲
        public static long ch_crn_zxyddw = 4;       //走行原点定位
        public static long ch_crn_sjyddw = 8;       //升降原点定位
        public static long ch_crn_zxzdw = 16;       //走行在定位
        public static long ch_crn_cyzzj = 32;       //叉牙在中间
        public static long ch_crn_cyzzd = 64;       //叉牙在左端
        public static long ch_crn_cyzyd = 128;      //叉牙在右端
        public static long ch_crn_sjsdw = 256;      //升降上定位
        public static long ch_crn_sjxdw = 512;      //升降下定位
        public static long ch_crn_plcdlbz = 1024;   //plc电力不足
        public static long ch_crn_sjtycyw = 2048;   //升降台有物
        //public static bool[] gl_crn_status = new bool[ci_crn_count];
        //plc状态字
        public static int ch_d1 = 1;
        public static int ch_d2 = 2;
        public static int ch_d3 = 4;
        public static int ch_d4 = 8;
        public static int ch_d5 = 16;
        public static int ch_d6 = 32;
        public static int ch_d7 = 64;
        public static int ch_d8 = 128;
        public static int ch_d9 = 256;
        public static int ch_d10 = 512;
        public static long ch_d11 = 1024;
        public static long ch_d12 = 2048;
        public static long ch_d13 = 4096;
        public static long ch_d14 = 8192;
        public static long ch_d15 = 16384;
        public static long ch_d16 = 32768;
        //堆垛机工作模式
        /// <summary>
        /// æ‰‹åŠ¨æ¨¡å¼
        /// </summary>
        public static int ci_CRN_MANUAL = 1;
        /// <summary>
        /// è‡ªåŠ¨æ¨¡å¼
        /// </summary>
        public static int ci_CRN_AUTO = 2;
        /// <summary>
        /// è¿žçº¿æ¨¡å¼
        /// </summary>
        public static int ci_CRN_ONLINE = 3;
        //堆垛机io状态
        public static int ci_CRN_LINK = 1;
        public static int ci_CRN_RESET = 2;
        public static int ci_CRN_CLEAR = 3;
        public static int ci_CRN_HOME = 4;
        public static int ci_CRN_STN = 5;
        public static int ci_CRN_SHELF = 6;
        public static int ci_CRN_INQUIRY = 7;
        public static int ci_CRN_STORE = 7;
        public static int ci_CRN_RETRIEVE = 8;
        public static int ci_CRN_MOVE = 10;
        public static int ci_CRN_STNTOSTN = 11;
        public static int ci_CRN_LOCTOLOC = 12;
        //堆垛机状态
        /// <summary>
        /// åˆå§‹åŒ–
        /// </summary>
        public static int ci_CRN_STS_INIT = -1;
        /// <summary>
        /// ç©ºé—²ï¼Œæ— ä»»åŠ¡
        /// </summary>
        public static int ci_CRN_STS_IDLE = 0;
        /// <summary>
        /// å–货定位中
        /// </summary>
        public static int ci_CRN_STS_FETCH_MOVING = 1;
        /// <summary>
        /// å–货中
        /// </summary>
        public static int ci_CRN_STS_FETCH = 2;
        /// <summary>
        /// å–货完成,放货定位中
        /// </summary>
        public static int ci_CRN_STS_RELEASE_MOVING = 3;
        /// <summary>
        /// æ”¾è´§ä¸­
        /// </summary>
        public static int ci_CRN_STS_RELEASE = 4;
        /// <summary>
        /// å›žåŽŸç‚¹ä¸­
        /// </summary>
        public static int ci_CRN_STS_HP = 5;
        /// <summary>
        /// åŽ»ååŽŸç‚¹ä¸­
        /// </summary>
        public static int ci_CRN_STS_OHP = 6;
        /// <summary>
        /// åº“位移转中
        /// </summary>
        public static int ci_CRN_STS_LOC_MOVE = 7;
        /// <summary>
        /// ä»»åŠ¡å®Œæˆï¼Œç­‰å¾…WCS确认
        /// </summary>
        public static int ci_CRN_STS_TASK_FINISH = 90;
        //public static int ci_CRN_SETTING = 0;
        //public static int ci_CRN_STS_IDLE = 1;
        public static int ci_CRN_STS_STORE_MOVE = 2; //{ STORE COMMAND }
        public static int ci_CRN_STS_RETRIEVE_MOVE = 3; //{ RETRIEVE COMMAND }
        public static int ci_CRN_STS_MOVING = 4; //{ MOVE COMMAND }
        public static int ci_CRN_STS_STORE_OK = 5;
        public static int ci_CRN_STS_RETRIEVE_OK = 6;
        public static int ci_CRN_STS_MOVING_OK = 7;
        public static int ci_CRN_STS_ERROR = 8;
        public static int ci_CRN_STS_ERROR_IDLE = 9;
        //public static int ci_CRN_STS_OHP = 10;
        public static int ci_CRN_STS_STOP = 11;
        public static int ci_CRN_STS_STNCHG_MOVE = 12;
        public static int ci_CRN_STS_STNCHG_OK = 13;
        public static int ci_CRN_STS_LOCATION_MOVE = 14;
        public static int ci_CRN_STS_LOCATION_MOVE_OK = 16;
        public static int ci_CRN_STS_HP_POSITION = 15; ///20061007
        //工作状态
        public static int ci_WRK_STORE_SETDATA = 1;
        public static int ci_WRK_STORE_SETPLC = 2;
        public static int ci_WRK_STORE_SETCRN = 3;
        public static int ci_WRK_STORE_OK = 4;
        public static int ci_WRK_STORE_UPDDB = 5;
        public static int ci_WRK_STORE_exit = 6;
        public static int ci_WRK_STNMOVE_OK = 7;
        public static int ci_WRK_RETRIEVE_SETDATA = 11;
        public static int ci_WRK_RETRIEVE_SETCRN = 12;
        public static int ci_WRK_RETRIEVE_OK = 14;
        public static int ci_WRK_RETRIEVE_UPDDB = 15;
        public static int ci_plc_MAX = 10;          //PLC最大队列数
        //plc工作命令类型
        public static int ci_PLC_SETID = 1;
        public static int ci_PLC_SETDEST = 2;
        public static int ci_PLC_SETIDDEST = 3;
        //COMUCATION I/O BUFFER SIZE
        public static int ci_crn_MAXBUFSIZE = 4096;
        public static int ci_barcode_MAXBUFSIZE = 4096;
        //public static int ci_MAXINCOUNT = 35;
        //public static int ci_MAXOUTCOUNT = 50;
        /// <summary>
        /// CRANE SLEEP TIME
        /// </summary>
        public static int ci_CRNtimeInterval = 300;
        /// <summary>
        /// PLC SLEEP TIME
        /// </summary>
        public static int ci_PLCtimeInterval = 300;
        /// <summary>
        /// Barcode Scanner SLEEP TIME
        /// </summary>
        public static int ci_BarcodetimeInterval = 200;
        /// <summary>
        /// LED SLEEP TIME
        /// </summary>
        public static int ci_LedtimeInterval = 200;
        /// <summary>
        /// ç³»ç»Ÿè¿è¡Œä¸­
        /// </summary>
        public static int ch_CMD_START = 1;
        /// <summary>
        /// ç³»ç»Ÿæš‚停中
        /// </summary>
        public static int ch_CMD_PAUSE = 10;
        /// <summary>
        /// ç³»ç»Ÿå…³é—­ä¸­
        /// </summary>
        public static int ch_CMD_CLOSE = 100;
        #endregion
        //-------------------------------------------------------------变量定义---------------------------------------------------------------------------
        /// <summary>
        /// ä¸‹å‘堆垛机命令后,等待一个周期,再判断堆垛机是否空闲
        /// </summary>
        public static int gi_cycle_flag = 0;
        /// <summary>
        /// å †åž›æœºIP
        /// </summary>
        public static string[] gs_crn_ip = new string[ci_crn_count];
        /// <summary>
        /// PLC输送设备IP
        /// </summary>
        public static string[] gs_plc_ip = new string[ci_plc_count];
        /// <summary>
        /// ç£…秤端口号,串口
        /// </summary>
        public static int[] gi_scale_port = new int[ci_scale_count];
        /// <summary>
        /// ç£…秤设备IP
        /// </summary>
        public static string[] gs_scale_ip = new string[ci_scale_count];
        /// <summary>
        /// æ¡ç è®¾å¤‡ä¸²å£ç«¯å£
        /// </summary>
        public static int[] gs_barcode_port = new int[ci_barcode_count];
        /// <summary>
        /// æ¡ç è®¾å¤‡IP
        /// </summary>
        public static string[] gs_barcode_ip = new string[ci_barcode_count];
        /// <summary>
        /// æ¡ç è®¾å¤‡IP
        /// </summary>
        public static string[] gs_led_ip = new string[ci_led_count];
        /// <summary>
        /// ç£…秤称重数据
        /// </summary>
        public static double[] gd_gross_wt = new double[ci_scale_count];
        /// <summary>
        /// æ¡ç æ‰«ææ•°æ®
        /// </summary>
        public static string[] gs_barcode_data = new string[ci_barcode_count];
        /// <summary>
        /// LED待发送数据
        /// </summary>
        public static string[] gs_led_data = new string[ci_led_count];
        public static string[] gs_led_data_pre = new string[ci_led_count];
        ///// <summary>
        ///// LED页数
        ///// </summary>
        //public static int[] gi_led_Pages = new int[ci_led_count];
        /// <summary>
        /// LED页码
        /// </summary>
        public static int[] gi_led_PageNumber = new int[ci_led_count];
        /// <summary>
        /// LED显示当前页码
        /// </summary>
        public static int[] gi_led_CurPageNumber = new int[ci_led_count];
        /// <summary>
        /// LED显示循环次数
        /// </summary>
        public static int[] gi_led_Counts = new int[ci_led_count];
        ///// <summary>
        ///// LED显示效果
        ///// </summary>
        //public static int[] gi_led_ShowStyle = new int[ci_led_count];
        /// <summary>
        /// å°è½¦ä½ç½®
        /// </summary>
        public static int[] gi_RGVPos = new int[ci_rgv_count];
        /// <summary>
        /// æ‰«æè¶…时时间判断
        /// </summary>
        public static double gd_scanTimeout = 4;
        ///// <summary>
        ///// PLC工作模式,0--入库,1--出库
        ///// </summary>
        //public static int gi_PLCModel = 0;
        ///// <summary>
        ///// PLC手工完成出库信号,工作档将12->14
        ///// </summary>
        //public static int gi_PLCClear = 0;
        /// <summary>
        /// 1号站条码扫描判断有没有扫到,计时判断
        /// </summary>
        public static DateTime barcodeTime = DateTime.Now;
        public static int barcodeFlag = 0;
        //public static string gs_barcode = "";
        #region LED参数
        /// <summary>
        /// æ˜¾ç¤ºå±å®½åº¦
        /// </summary>
        public static int SCREEN_WIDTH = 96;
        /// <summary>
        /// æ˜¾ç¤ºå±é«˜åº¦
        /// </summary>
        public static int SCREEN_HEIGHT = 48;
        public static int CONTROLLER_TYPE = 850;                        //控制器类型
        public static int SCREEN_TYPE = 1;                              //显示屏类型
        public static int SCREEN_PIXELMODE = 1;                         //点阵类型
        public static int SCREEN_DATADA = 0;                            //数据极性
        public static int SCREEN_DATAOE = 0;                            //OE极性
        public static int SCREEN_ROWORDER = 0;                          //行序模式
        public static int SCREEN_FREQPAR = 0;                           //扫描点频
        public static string SCREEN_COMM = "COM1";                      //串口
        public static int SCREEN_BAUD = 57600;                          //串口波特率
        public static string SCREEN_STATUSFILE = "C:\\ScreenStatus.ini";  //显示屏状态保存文件
        public static int SCREEN_SENDMODE = 2;                          //通讯模式,0:串口 2:网络 4:wifi
        public const int SENDALLPROGRAM = 41456;                        //发送所有节目信息。
        /// <summary>
        /// å‘送数据给控制卡时互斥作用,每次只能发送一条过去
        /// </summary>
        public static bool m_bSendBusy = false;
        #endregion
        //public static string barrec = "";
        public static int[] areamode = new int[4];
        //public static bool insesheettag = false;
        //public static string[] gs_barcode_tmp = new string[5];
        public static string[] crncmd = new string[ci_crn_count];
        public static int[] crnwrkno = new int[ci_crn_count];
        //public static int[] pickquereseq = new int[12];
        //public static int bk = 1;
        public static Form form1 = null;
        public static Form form2 = null;
        //public static bool stnmove = true;
        //public static bool crnmove = true;
        //public static bool crnallow = true;
        public static int gi_Online_Flag = 10;
        public static bool[] gb_crn_status = new bool[ci_crn_count];
        //public static int gi_wrkfileh = 0;
        public static string[] gs_crnlastio = new string[ci_crn_count];
        public static int[] gi_crnstn = new int[ci_crn_count];
        public static string[] gs_crn_data_pre = new string[ci_crn_count];
        public static int[] gi_crn_wrkno = new int[ci_crn_count];
        public static string[] gs_crn_err_pre = new string[ci_crn_count];
        //public static int[] clrled = new int[10];
        public static int gi_buffer_count = 16;
        public static int gi_trolleypos_count = 2;
        //public static int[] stnbuffer = new int[gi_buffer_count];//
        public static int[] trolleypos = new int[gi_trolleypos_count];//2个,14,29
        //public static int[] ci_stnbuffer = new int[gi_buffer_count];
        public static int[] gi_stabuffer = new int[gi_buffer_count];
        //public static int[] gi_crn_actsts = new int[ci_crn_count];
        public static int[] gi_stn_iotype = new int[ci_sta_count];
        public static int[] g_ari_staion = new int[ci_sta_count];
        public static string[] g_ars_staion_name = new string[ci_sta_count];
        public static int[] g_ari_staion_plc_no = new int[ci_sta_count];
        public static Control[] g_ari_staion_Component_seq = new Control[ci_sta_count];
        public static int[] g_ari_station_idaddr = new int[ci_sta_count];
        public static int[] g_ari_station_stsaddr = new int[ci_sta_count];
        public static int[] g_ari_station_destaddr = new int[ci_sta_count];
        public static string[] gs_plc_data_pre = new string[ci_sta_count];
        public static int[] gi_crn_iotype = new int[ci_crn_count];
        public static int[] gi_loctype = new int[ci_sta_count];
        //堆垛机变量
        //public static string[,] crnstsvalue = new string[ci_crn_count, 33];
        public static string[] crnerrlist = new string[ci_crn_count];
        //public static string[] crnip = new string[ci_crn_count];
        public static int[] crn_i_crnno = new int[ci_crn_count];
        public static int[] crn_i_crn_sts = new int[ci_crn_count];
        /// <summary>
        /// å †åž›æœºå‘½ä»¤
        /// </summary>
        public static string[] gs_crncmd = new string[ci_crn_count];
        public static string[] crn_s_commandstr = new string[ci_crn_count];
        public static int[] crn_i_kind = new int[ci_crn_count];
        public static int[] crn_i_Wrkno = new int[ci_crn_count];
        public static int[] crn_i_fstn = new int[ci_crn_count];
        public static int[] crn_i_tstn = new int[ci_crn_count];
        public static string[] crn_s_Flocno = new string[ci_crn_count];
        public static string[] crn_s_Tlocno = new string[ci_crn_count];
        public static int[] crn_i_Errcod = new int[ci_crn_count];
        public static bool[] gi_Yanshi_Flag = new bool[ci_crn_count];
        /// <summary>
        /// æ˜¯å¦åœ¨åŽŸç‚¹ï¼Œ1=原点
        /// </summary>
        public static int[] crn_i_onHP = new int[ci_crn_count];
        ////////////////////---------------------------堆垛机变量表--------------------------
        #region å †åž›æœº(CRN)状态信息
        /// <summary>
        /// å †åž›æœºå·¥ä½œæ¨¡å¼ï¼Œ0 = ç¦»çº¿æ¨¡å¼ï¼Œ1=手动模式中,2=自动模式中,3=电脑连线模式中
        /// </summary>
        public static int[] Mode = new int[ci_crn_count];
        /// <summary>
        /// å †åž›æœºå½“前任务号
        /// </summary>
        public static int[] TaskNo = new int[ci_crn_count];
        /// <summary>
        /// SRM工位1当前任务执行状态,0=空闲,1=取货定位中,2=取货中,3=取货完成,放货定位中,
        /// 4=放货中,5=回原点中,6=去反原点中,7=库位移转,90=任务完成,WCS未确认,99=报警
        /// </summary>
        public static int[] CrnState = new int[ci_crn_count];
        ///// <summary>
        ///// å †åž›æœºå½“前列号
        ///// </summary>
        //public static int[] CurBay = new int[ci_crn_count];
        ///// <summary>
        ///// å †åž›æœºå½“前层号
        ///// </summary>
        //public static int[] CurLev = new int[ci_crn_count];
        /// <summary>
        /// å †åž›æœºå½“前货叉位置,0=货叉原位,1=货叉在左侧,2=货叉在右侧
        /// </summary>
        public static int[] ForkPos = new int[ci_crn_count];
        /// <summary>
        /// å †åž›æœºå½“前载货台定位位置,1=下定位,2=上定位,0=不在定位
        /// </summary>
        public static int[] LiftPos = new int[ci_crn_count];
        /// <summary>
        /// å †åž›æœºèµ°è¡Œå®šä½ä½ç½®ï¼Œ1=在定位,0=不在定位
        /// </summary>
        public static int[] WalkPos = new int[ci_crn_count];
        /// <summary>
        /// =1 å †åž›æœºä»»åŠ¡å®Œæˆä¿¡å·
        /// </summary>
        public static int[] TaskFinish = new int[ci_crn_count];
        /// <summary>
        /// SRM工位1任务完成处理标记,防止重复处理。默认为0,timer1根据F1TaskFinish处理工作档状态后赋值1
        /// å †åž›æœºçº¿ç¨‹ä¸­ä¸‹å‘确认信息后,重置为0
        /// </summary>
        public static int[] TaskFlag = new int[ci_crn_count];
        /// <summary>
        /// =1 å †åž›æœºè½½è´§å°æœ‰è´§
        /// </summary>
        public static int[] Loaded = new int[ci_crn_count];
        /// <summary>
        /// å †åž›æœºå¼‚常码
        /// </summary>
        public static int[] AlarmCode = new int[ci_crn_count];
        /// <summary>
        /// å †åž›æœºèµ°è¡Œé€Ÿåº¦(m/min)
        /// </summary>
        public static float[] WalkSpeed = new float[ci_crn_count];
        /// <summary>
        /// å †åž›æœºå‡é™é€Ÿåº¦(m/min)
        /// </summary>
        public static float[] LiftSpeed = new float[ci_crn_count];
        /// <summary>
        /// å †åž›æœºå‰ç‰™é€Ÿåº¦(m/min)
        /// </summary>
        public static float[] ForkSpeed = new float[ci_crn_count];
        /// <summary>
        /// å †åž›æœºç´¯è®¡èµ°è¡Œè·ç¦»(km)
        /// </summary>
        public static float[] XDistance = new float[ci_crn_count];
        /// <summary>
        /// å †åž›æœºç´¯è®¡å‡é™è·ç¦»(km)
        /// </summary>
        public static float[] YDistance = new float[ci_crn_count];
        /// <summary>
        /// å †åž›æœºç´¯è®¡èµ°è¡Œæ—¶é•¿(H)
        /// </summary>
        public static float[] XDuration = new float[ci_crn_count];
        /// <summary>
        /// å †åž›æœºç´¯è®¡å‡é™æ—¶é•¿(H)
        /// </summary>
        public static float[] YDuration = new float[ci_crn_count];
        ///// <summary>
        ///// 1=SRM处于报警状态
        ///// </summary>
        //public static int[] AlarmStatus = new int[ci_crn_count];
        ///// <summary>
        ///// SRM工位1当前货叉位置,[1:左近,2:中位,3:右近,4:左远,5:右远]
        ///// </summary>
        //public static int[] F1PosZ = new int[ci_crn_count];
        ///// <summary>
        ///// SRM当前列坐标,单位mm
        ///// </summary>
        //public static double[] PosXmm = new double[ci_crn_count];
        ///// <summary>
        ///// SRM当前层坐标,单位mm
        ///// </summary>
        //public static double[] PosYmm = new double[ci_crn_count];
        ///// <summary>
        ///// SRM工位1当前货叉坐标,单位mm
        ///// </summary>
        //public static double[] F1PosZmm = new double[ci_crn_count];
        ///// <summary>
        ///// SRM工位2当前任务执行状态,0=位置,1=空闲,2=检查任务数据,3=定位到取货位,7=取货完成,
        ///// 8=等待调度柜允许,9=移动到放货位置,10=放货中,13=搬运完成,14=空载避让,15=检查任务数据
        ///// 20=检查源位置,21=检查目标位置,50=移动任务,98=任务完成,WCS未确认,99=报警
        ///// </summary>
        //public static int[] F2State = new int[ci_crn_count];
        #endregion
        #region å †åž›æœºçŠ¶æ€å­—å®šä¹‰
        /// <summary>
        /// æ‰‹åŠ¨æ¨¡å¼
        /// </summary>
        public static bool[] crn_sdms = new bool[ci_crn_count];
        /// <summary>
        /// è‡ªåŠ¨æ¨¡å¼
        /// </summary>
        public static bool[] crn_zdms = new bool[ci_crn_count];
        /// <summary>
        /// ç”µè„‘模式
        /// </summary>
        public static bool[] crn_dnms = new bool[ci_crn_count];
        /// <summary>
        /// æ‰‹åЍ䏭
        /// </summary>
        public static bool[] crn_sdz = new bool[ci_crn_count];
        /// <summary>
        /// è‡ªåЍ䏭
        /// </summary>
        public static bool[] crn_zdz = new bool[ci_crn_count];
        /// <summary>
        /// ç”µè„‘模式中
        /// </summary>
        public static bool[] crn_dnmsz = new bool[ci_crn_count];
        /// <summary>
        /// æ€¥åœ
        /// </summary>
        public static bool[] crn_jt = new bool[ci_crn_count];
        /// <summary>
        /// å¼‚常
        /// </summary>
        public static bool[] crn_yc = new bool[ci_crn_count];
        /// <summary>
        /// ä¿ç•™
        /// </summary>
        public static bool[] crn_dndmz = new bool[ci_crn_count];
        /// <summary>
        /// ä»»åŠ¡å®Œæˆ
        /// </summary>
        public static bool[] crn_dnmljs = new bool[ci_crn_count];
        /// <summary>
        /// å…¥åº“中
        /// </summary>
        public static bool[] crn_rkz = new bool[ci_crn_count];
        /// <summary>
        /// å‡ºåº“中
        /// </summary>
        public static bool[] crn_ckz = new bool[ci_crn_count];
        /// <summary>
        /// åº“到库
        /// </summary>
        public static bool[] crn_kdkz = new bool[ci_crn_count];
        /// <summary>
        /// ç«™åˆ°ç«™
        /// </summary>
        public static bool[] crn_zdzz = new bool[ci_crn_count];
        /// <summary>
        /// åŽ»åŽŸç‚¹
        /// </summary>
        public static bool[] crn_yxz = new bool[ci_crn_count];
        /// <summary>
        /// åŽ»ååŽŸç‚¹
        /// </summary>
        public static bool[] crn_dcqhjd = new bool[ci_crn_count];
        /// <summary>
        /// æ”¾è´§é˜¶æ®µ
        /// </summary>
        public static bool[] crn_dcfhjd = new bool[ci_crn_count];
        /// <summary>
        /// åŠè½¦ç©ºé—²
        /// </summary>
        public static bool[] crn_dckx = new bool[ci_crn_count];
        /// <summary>
        /// èµ°è¡ŒåŽŸç‚¹å®šä½
        /// </summary>
        public static bool[] crn_zxyddw = new bool[ci_crn_count];
        /// <summary>
        /// å‡é™åŽŸç‚¹å®šä½
        /// </summary>
        public static bool[] crn_sjyddw = new bool[ci_crn_count];
        /// <summary>
        /// èµ°è¡Œåœ¨å®šä½
        /// </summary>
        public static bool[] crn_zxzdw = new bool[ci_crn_count];
        /// <summary>
        /// å‰ç‰™åœ¨ä¸­é—´
        /// </summary>
        public static bool[] crn_cyzzj = new bool[ci_crn_count];
        /// <summary>
        /// å‰ç‰™åœ¨å·¦ç«¯
        /// </summary>
        public static bool[] crn_cyzzd = new bool[ci_crn_count];
        /// <summary>
        /// å‰ç‰™åœ¨å³ç«¯
        /// </summary>
        public static bool[] crn_cyzyd = new bool[ci_crn_count];
        /// <summary>
        /// å‡é™ä¸Šå®šä½
        /// </summary>
        public static bool[] crn_sjsdw = new bool[ci_crn_count];
        /// <summary>
        /// å‡é™ä¸‹å®šä½
        /// </summary>
        public static bool[] crn_sjxdw = new bool[ci_crn_count];
        /// <summary>
        /// ä¿ç•™
        /// </summary>
        public static bool[] crn_plcdlbz = new bool[ci_crn_count];
        /// <summary>
        /// å‡é™å°æœ‰ç‰©
        /// </summary>
        public static bool[] crn_sjtycyw = new bool[ci_crn_count];
        /// <summary>
        /// å½“前排数
        /// </summary>
        public static int[] crn_dqps = new int[ci_crn_count];
        /// <summary>
        /// å½“前层数
        /// </summary>
        public static int[] crn_dqcs = new int[ci_crn_count];
        /// <summary>
        /// èµ°è¡Œé•­å°„距离
        /// </summary>
        public static double[] crn_zxlsz = new double[ci_crn_count];
        /// <summary>
        /// å‡é™é•­å°„距离
        /// </summary>
        public static double[] crn_sjlsz = new double[ci_crn_count];
        public static int[] crn_dnmlyc = new int[ci_crn_count];
        /// <summary>
        /// è®¾å¤‡å¼‚常码
        /// </summary>
        public static int[] crn_ycmm = new int[ci_crn_count];
        public static int[] crn_yczm = new int[ci_crn_count];
        //public static int[] crn_zxlsz1 = new int[ci_crn_count];
        //public static int[] crn_zxlsz2 = new int[ci_crn_count];
        //public static int[] crn_sjlsz1 = new int[ci_crn_count];
        //public static int[] crn_sjlsz2 = new int[ci_crn_count];
        #endregion
        public static string[] crncmdtext = new string[ci_crn_count];
        //定义plc变量
        //public struct sta
        //{
        public static int PlcMaxQuereCount = 10;//plc最大队列存储数量
        public static string[,] s_cmd = new string[4, PlcMaxQuereCount];
        //public static Queue<string> PlcAQueue = new Queue<string>();
        //public static Queue<string> PlcBQueue = new Queue<string>();
        public static string[,] plc_s_dev_no = new string[ci_plc_count, ci_sta_count];
        public static string[,] plc_s_type_mk = new string[ci_plc_count, ci_sta_count];
        public static string[,] plc_s_term_mk = new string[ci_plc_count, ci_sta_count];
        public static int[,] plc_i_status = new int[ci_plc_count, ci_sta_count];
        public static int[,] plc_i_plc_no = new int[ci_plc_count, ci_sta_count];
        public static int[,] plc_i_Wrk_no = new int[ci_plc_count, ci_sta_count];
        public static int[,] plc_i_ctn_type = new int[ci_plc_count, ci_sta_count];
        public static int[,] plc_i_pakmk = new int[ci_plc_count, ci_sta_count];
        public static int[,] plc_i_buff_count = new int[ci_plc_count, ci_sta_count];
        public static string[,] plc_s_stn_status = new string[ci_plc_count, ci_sta_count];
        public static string[,] plc_s_from_stn = new string[ci_plc_count, ci_sta_count];
        public static string[,] plc_s_next_stn = new string[ci_plc_count, ci_sta_count];
        public static string[,] plc_s_t_station = new string[ci_plc_count, ci_sta_count];
        public static string[,] plc_s_autoing = new string[ci_plc_count, ci_sta_count];
        public static string[,] plc_s_loading = new string[ci_plc_count, ci_sta_count];
        /// <summary>
        /// å¯å…¥
        /// </summary>
        public static string[,] plc_s_canining = new string[ci_plc_count, ci_sta_count];
        /// <summary>
        /// å¯å‡º
        /// </summary>
        public static string[,] plc_s_canouting = new string[ci_plc_count, ci_sta_count];
        /// <summary>
        /// ç©ºæ¿ä¿¡å·
        /// </summary>
        public static string[,] plc_s_inreq1 = new string[ci_plc_count, ci_sta_count];
        /// <summary>
        /// æ»¡æ‰˜ä¿¡å·
        /// </summary>
        public static string[,] plc_s_inreq2 = new string[ci_plc_count, ci_sta_count];
        /// <summary>
        /// è´§ç‰©ç±»åž‹
        /// </summary>
        public static string[,] plc_s_loctype = new string[ci_plc_count, ci_sta_count];
        /// <summary>
        /// æŠ¥è­¦
        /// </summary>
        public static string[,] plc_s_error = new string[ci_plc_count, ci_sta_count];
        public static string[,] plc_s_modeallow = new string[ci_plc_count, ci_sta_count];
        //public static string[] s_plc_err_count1 = new string[ci_plcerrcount];
        //public static string[] s_plc_err_count2 = new string[ci_plcerrcount];
        //public struct fieldds//字段描述
        //{
        //    public int index;
        //    public string dataname;
        //    public string datadesc;
        //}
        //public Common()
        //{
        //}
        //public static string Proc_GetNum(string str)
        //{
        //    string result = "";
        //    try
        //    {
        //        for (int i = 0; i < str.Length; i++)
        //        {
        //            if (str[i] == '0' || str[i] == '1' || str[i] == '2' || str[i] == '3' || str[i] == '4' || str[i] == '6' || str[i] == '7' || str[i] == '8' || str[i] == '9')
        //            {
        //                result = result.Trim() + str[i];
        //            }
        //        }
        //    }
        //    catch (Exception t)
        //    {
        //    }
        //    return result;
        //}
        /// <summary>
        /// å¢žåŠ plc命令队列
        /// </summary>
        /// <param name="plcno">plc号</param>
        /// <param name="cmd">指令</param>
        public static void AddPlcQuereCmd(int plcno, string cmd)
        {
            if (cmd == "") { return; };
            for (int j = PlcMaxQuereCount - 1; j >= 0; j--)
            {
                if (s_cmd[plcno, j] == "" || s_cmd[plcno, j] == null)
                {
                    s_cmd[plcno, j] = cmd;
                    break;
                }
            }
            AdjPlcQuere(plcno);
        }
        /// <summary>
        /// å¾—到plc指令队列的数量
        /// </summary>
        /// <param name="plcno">plc号</param>
        /// <returns>队列的数量</returns>
        public static int GetPlcQuereCount(int plcno)
        {
            int count = 0;
            for (int i = 0; i < ci_plc_MAX; i++)
            {
                if (s_cmd[plcno, i] != "" && s_cmd[plcno, i] != null)
                {
                    count++;
                }
            }
            return count;
        }
        /// <summary>
        /// ä»Žplc队列中取最先进的一笔指令
        /// </summary>
        /// <param name="plcno">plc号</param>
        /// <returns>对应最先进的指令</returns>
        public static string GetPlcQuereCmd(int plcno)
        {
            string cmd = "";
            for (int i = 0; i < PlcMaxQuereCount; i++)
            {
                if (s_cmd[plcno, i] != "" && s_cmd[plcno, i] != null)
                {
                    cmd = s_cmd[plcno, i];
                    s_cmd[plcno, i] = "";
                    break;
                }
            }
            AdjPlcQuere(plcno);
            return cmd;
        }
        /// <summary>
        /// è°ƒæ•´é˜Ÿåˆ—存储
        /// </summary>
        /// <param name="plcno">plc号</param>
        public static void AdjPlcQuere(int plcno)
        {
            string s_tmep1 = "", s_tmep2 = "";
            for (int j = PlcMaxQuereCount - 1; j >= 0; j--)
            {
                s_tmep1 = s_cmd[plcno, j];
                if (j > 0)
                {
                    s_tmep2 = s_cmd[plcno, j - 1];
                    if (s_tmep1 != "" && s_tmep2 == "")
                    {
                        s_cmd[plcno, j - 1] = s_tmep1;
                        s_cmd[plcno, j] = "";
                    }
                }
            }
        }
        /// <summary>
        /// æ ¹æ®å †åž›æœºçŠ¶æ€å€¼å¾—åˆ°çŠ¶æ€åç§°
        /// </summary>
        /// <param name="i_sts">堆垛机状态值</param>
        /// <returns>堆垛机状态</returns>
        public static string GetCrnStsName(int i_sts)
        {
            string crnstsname = "";
            switch (i_sts)
            {
                case -1:
                    crnstsname = "初始化";
                    break;
                case 0:
                    crnstsname = "空闲";
                    break;
                case 1:
                    crnstsname = "取货定位中";
                    break;
                case 2:
                    crnstsname = "取货中";
                    break;
                case 3:
                    crnstsname = "取货完成,放货定位中";
                    break;
                case 4:
                    crnstsname = "放货中";
                    break;
                case 5:
                    crnstsname = "回原点中";
                    break;
                case 6:
                    crnstsname = "去反原点中";
                    break;
                case 7:
                    crnstsname = "库位移转";
                    break;
                case 90:
                    crnstsname = "任务完成,WCS未确认";
                    break;
                case 99:
                    crnstsname = "报警";
                    break;
                default:
                    crnstsname = "未知";
                    break;
            }
            return crnstsname;
        }
        /// <summary>
        /// ç«™ç‚¹åˆå§‹åŒ–,PLC读写地址定义
        /// </summary>
        public static void InitSta()
        {
            int i;
            for (i = 1; i <= ci_sta_count; i++)
            {
                    //站点号
                    g_ari_staion[i - 1] = i + 100;
                    g_ars_staion_name[i - 1] = (i + 100).ToString();
                    g_ari_staion_plc_no[i - 1] = 1;
                    //工作号  ç›®æ ‡åº“位  çŠ¶æ€
                    g_ari_station_idaddr[i - 1] = (i - 1) * 4;    //工作号地址
                    g_ari_station_destaddr[i - 1] = (i - 1) * 4 + 2;      //目标站地址
                    g_ari_station_stsaddr[i - 1] = i + 149;    //状态位地址
                //else if (i > 5 && i <= 10)
                //{
                //    g_ari_staion[i - 1] = i + 194;
                //    g_ars_staion_name[i - 1] = (i + 194).ToString();
                //    g_ari_staion_plc_no[i - 1] = 1;
                //    g_ari_station_idaddr[i - 1] = (i - 1) * 4;
                //    g_ari_station_destaddr[i - 1] = (i - 1) * 4 + 2;
                //    g_ari_station_stsaddr[i - 1] = i + 59;
                //}
                //初始化站点中各个值的数据。
                plc_s_dev_no[g_ari_staion_plc_no[i - 1] - 1, i - 1] = g_ari_staion[i - 1].ToString();
                plc_s_autoing[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "N";
                plc_s_loading[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "N";
                plc_s_canining[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "N";
                plc_s_canouting[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "N";
                plc_s_inreq1[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "N";
                plc_s_inreq2[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "N";
                plc_s_loctype[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "N";
                plc_s_error[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "N";
                plc_i_buff_count[g_ari_staion_plc_no[i - 1] - 1, i - 1] = 0;
                plc_i_Wrk_no[g_ari_staion_plc_no[i - 1] - 1, i - 1] = 0;
                plc_s_stn_status[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "N";
                plc_s_next_stn[g_ari_staion_plc_no[i - 1] - 1, i - 1] = "0";
                plc_i_pakmk[g_ari_staion_plc_no[i - 1] - 1, i - 1] = 0;
                gi_stn_iotype[i - 1] = 0;   //初始化站点出入形态
            }
        }
        /// <summary>
        /// å †åž›æœºåˆå§‹åŒ–
        /// </summary>
        public static void InitCrn()
        {
            int i;
            for (i = 1; i <= ci_crn_count; i++)
            {
                crn_i_crnno[i - 1] = i;
                //crn_i_crn_sts[i - 1] = ci_CRN_SETTING;
                gs_crncmd[i - 1] = "";
                crn_i_kind[i - 1] = 0;
                crn_i_Wrkno[i - 1] = 0;
                crn_i_fstn[i - 1] = 0;
                crn_i_tstn[i - 1] = 0;
                crn_s_Flocno[i - 1] = "";
                crn_s_Tlocno[i - 1] = "";
                //crn_i_Errcod[i - 1] = 0;
                crn_i_onHP[i - 1] = 0;
                gs_crnlastio[i - 1] = "I";
                gs_crncmd[i - 1] = "";
                crn_s_commandstr[i - 1] = "";
                gi_crn_iotype[i - 1] = 0;
                gb_crn_status[i - 1] = true;
                AlarmCode[i - 1] = 0;
                TaskFlag[i - 1] = 0;
                CrnState[i - 1] = -1;
            }
        }
        /// <summary>
        /// æ¡ç ã€LED、磅秤数据初始化
        /// </summary>
        public static void InitDev()
        {
            int i;
            for (i = 0; i < ci_barcode_count; i++)
            {
                gs_barcode_data[i] = "";
            }
            for (i = 0; i < ci_led_count; i++)
            {
                gs_led_data[i] = "";
                gs_led_data_pre[i] = "";
                gi_led_PageNumber[i] = 1;
                //gi_led_Pages[i] = 1;
                gi_led_Counts[i] = 0;
                gi_led_CurPageNumber[i] = 1;
            }
            for (i = 0; i < ci_scale_count; i++)
            {
                gd_gross_wt[i] = 0;
            }
        }
        /// <summary>
        /// å¾—到站序号
        /// </summary>
        /// <param name="stn"></param>
        /// <returns></returns>
        public static int GetStnSeq(int stn)
        {
            int retval = 0;
            for (int i = 0; i <= ci_sta_count - 1; i++)
            {
                if (g_ari_staion[i] == stn)
                {
                    retval = i;
                    return retval;
                    //break;
                }
            }
            return 0;
        }
        ////得到区域模式地址
        //public static int GetBufAddrByStn(int stn)
        //{
        //    int addr = 0;
        //    switch (stn)
        //    {
        //        case 1:
        //            addr = 4107;
        //            break;
        //        case 2:
        //            addr = 4110;
        //            break;
        //        default:
        //            break;
        //    }
        //    return addr;
        //}
        //public static string InttoStringYN(int i, int j)
        //{
        //    if (i == 1)
        //    {
        //        if (j == 1)
        //        {
        //            return "出";
        //        }
        //        else
        //        {
        //            return "入";
        //        }
        //    }
        //    else
        //    {
        //        if (j == 1)
        //        {
        //            return "入";
        //        }
        //        else
        //        {
        //            return "出";
        //        }
        //    }
        //}
        ///// <summary>
        ///// åå…­è¿›åˆ¶è½¬åè¿›åˆ¶
        ///// </summary>
        ///// <param name="s_data"></param>
        ///// <param name="i_len"></param>
        ///// <returns></returns>
        //public static int funi_htoi(string s_data, int i_len)
        //{
        //    int i_sum = 0, i_tmp = 0, x = 0;
        //    s_data = s_data.ToUpper();
        //    if (s_data == "" || s_data == null)
        //    {
        //        return 0;
        //    }
        //    for (x = 0; x < i_len; x++)
        //    {
        //        i_tmp = Convert.ToInt32(s_data[x]);
        //        if (i_tmp > 58) i_tmp = i_tmp - 7;
        //        i_sum = i_sum * 16 + i_tmp - 48;
        //    }
        //    return i_sum;
        //}
        ///// <summary>
        ///// åˆ¤æ–­æ˜¯å¦4位十六进制是否正确
        ///// </summary>
        ///// <param name="data"></param>
        ///// <returns></returns>
        //public static bool fun_chkhex(string data)
        //{
        //    string s_str = data.PadLeft(4, '0');
        //    int i_asc = 0, i_count = 0;
        //    for (int i = 0; i < s_str.Length; i++)
        //    {
        //        i_asc = Convert.ToInt32(s_str[i]);
        //        if ((i_asc > 47 && i_asc < 58) || (i_asc > 64 && i_asc < 71))
        //        {
        //        }
        //        else
        //        {
        //            i_count++;
        //        }
        //    }
        //    if (i_count > 0)
        //    {
        //        return false;
        //    }
        //    else
        //    {
        //        return true;
        //    }
        //}
        /// <summary>
        /// åå…­è¿›åˆ¶è½¬åè¿›åˆ¶
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static double fun_hextodec(string data)
        {
            string cptr = "";
            string s_str = data.Trim();
            int len = s_str.Length;
            double nsum = 0;
            int k = 1;
            for (int i = 0; i < len; i++)
            {
                cptr = s_str.Substring(len - i - 1, 1);
                if (cptr == "A")
                {
                    cptr = "10";
                }
                else if (cptr == "B")
                {
                    cptr = "11";
                }
                else if (cptr == "C")
                {
                    cptr = "12";
                }
                else if (cptr == "D")
                {
                    cptr = "13";
                }
                else if (cptr == "E")
                {
                    cptr = "14";
                }
                else if (cptr == "F")
                {
                    cptr = "15";
                }
                if (i == 0)
                {
                    k = 1;
                }
                else if (i == 1)
                {
                    k = 16;
                }
                else if (i == 2)
                {
                    k = 256;
                }
                else if (i == 3)
                {
                    k = 16 * 256;
                }
                else if (i == 4)
                {
                    k = 256 * 256;
                }
                else if (i == 5)
                {
                    k = 16 * 256 * 256;
                }
                else if (i == 6)
                {
                    k = 256 * 256 * 256;
                }
                else if (i == 7)
                {
                    k = 16 * 256 * 256 * 256;
                }
                nsum = nsum + Convert.ToInt32(cptr) * k;
            }
            return nsum;
        }
        ////得到十六进制
        //public static string fun_gethex(string s_data)
        //{
        //    string tohex = "";
        //    tohex = Convert.ToString(Convert.ToInt32(funi_htoi(s_data, 4)), 2);
        //    return tohex;
        //}
        ////得到位与运算结果,并判断是否相同
        //public static bool fun_ChkAndByte(string s_data, long t_data)
        //{
        //    long tohex1 = 0, tohex2 = 0, tohex3 = 0;
        //    tohex1 = Convert.ToInt64(Convert.ToString(Convert.ToInt64(funi_htoi(s_data, s_data.Length)), 2));
        //    tohex2 = t_data;// Convert.ToInt32(Convert.ToString(t_data, 2));
        //    tohex3 = tohex1 & tohex2;
        //    if (tohex3 == tohex2)
        //    {
        //        return true;
        //    }
        //    else
        //    {
        //        return false;
        //    }
        //}
        /// <summary>
        /// å¾—到位与运算结果,并判断是否相同
        /// </summary>
        /// <param name="i_data"></param>
        /// <param name="t_data"></param>
        /// <returns></returns>
        public static bool fun_ChkAndByte(long i_data, long t_data)
        {
            long tohex1 = 0, tohex2 = 0, tohex3 = 0;
            tohex1 = i_data;
            tohex2 = t_data;// Convert.ToInt32(Convert.ToString(t_data, 2));
            tohex3 = tohex1 & tohex2;
            if (tohex3 == tohex2)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// ç”Ÿæˆå·¥ä½œå·
        /// </summary>
        /// <param name="wrkmk"></param>
        /// <returns></returns>
        public static int GetWrkno(int wrkmk)
        {
            int wrkno = 0, li_s_no = 0, li_e_no = 0;
            SqlConnection sqlcn = new SqlConnection(sqlcon);
            sqlcn.Open();
            SqlDataAdapter sqlda = new SqlDataAdapter("select wrk_no,s_no,e_no from asr_wrk_lastno where wrk_mk=" + wrkmk + "", sqlcn);
            DataSet ds = new DataSet();
            sqlda.Fill(ds);
            DataView dv = new DataView(ds.Tables[0]);
            sqlcn.Close();
            foreach (System.Data.DataRowView drow in dv)
            {
                wrkno = Convert.ToInt32(drow[0].ToString().Trim());
                li_s_no = Convert.ToInt32(drow[1].ToString().Trim());
                li_e_no = Convert.ToInt32(drow[2].ToString().Trim());
            }
            if (wrkno >= li_e_no)
            {
                wrkno = li_s_no;
            }
            else
            {
                wrkno++;
            }
            SqlConnection sqlcon1 = new SqlConnection(sqlcon);
            sqlcon1.Open();
            SqlTransaction sqlts = sqlcon1.BeginTransaction();
            string sql = "update asr_wrk_lastno set wrk_no=" + wrkno + " where wrk_mk=" + wrkmk + "";
            SqlCommand sqlcom1 = new SqlCommand(sql, sqlcon1);
            sqlcom1.Transaction = sqlts;
            try
            {
                sqlcom1.ExecuteNonQuery();
                sqlts.Commit();
            }
            catch (SqlException r)
            {
                //MessageBox.Show("更新[asr_wrk_lastno]错误!", "错误");
                sqlts.Rollback();
                wrkno = 0;
            }
            finally
            {
                sqlcom1.Dispose();
                sqlcon1.Dispose();
                sqlcon1.Close();
            }
            return wrkno;
        }
        /// <summary>
        /// ç”Ÿæˆåº“位号
        /// </summary>
        /// <param name="type">入库类型</param>
        /// <param name="loc_type">高低库位</param>
        /// <param name="crn_no">堆垛机号</param>
        /// <param name="stano">入库站号</param>
        /// <param name="stnType">入库方向,1为东侧1列起数,2为西侧最大列起数</param>
        /// <returns></returns>
        public static string GetLocNo(int type, int loc_type, int crn_no, int stano, int stnType)
        {
            int e_staNo = 0;
            string locno = "";
            int li_crnrow = 0, li_crn = 0, li_cnt = 0, li_max_cnt = 0, i = 0, n = 0, li_min = 0, li_max = 0, li_max_1 = 0, li_crn_qty = 0, crnsts = 0;
            string orderBy = "lev1,bay1 asc";
            if (stnType == 1)    //东侧
            {
                orderBy = "lev1,bay1 asc";
            }
            else if (stnType == 2)  //西侧
            {
                orderBy = "lev1 asc,bay1 desc";
            }
            //DataView dv = ExecAsrsSelect("select current_row,s_row,e_row,crn_qty from asr_row_lastno where whs_type=" + whs_type);
            DataView dv = ExecAsrsSelect("select current_row,s_row,e_row,crn_qty from asr_row_lastno ");
            foreach (DataRowView drv in dv)
            {
                li_crnrow = Convert.ToInt32(drv[0].ToString());
                li_min = Convert.ToInt32(drv[1].ToString());
                li_max = Convert.ToInt32(drv[2].ToString());
                li_crn_qty = Convert.ToInt32(drv[3].ToString());
            }
            li_max_1 = li_max - 1;
            i = 1;
            do
            {
                if (li_crnrow == li_max)
                {
                    li_crnrow = li_min;
                }
                else if (li_crnrow == li_max_1)
                {
                    li_crnrow = li_min + 1;
                }
                else
                {
                    li_crnrow = li_crnrow + 2;
                }
                li_crn = (li_crnrow + 1) / 2;
                if (ChkCrnEnable(li_crn, "I") == "Y")
                {
                    e_staNo = getIoStaNo(type, li_crn, stano);
                    if (e_staNo == 0)
                    {
                        continue;
                    }
                    //if (type == 10)
                    //{
                    //    locno = getEmptyLocation(li_crnrow, loc_type, orderBy);
                    //}
                    if (locno == "")
                    {
                        string sql = "";
                        //if (type == 10)
                        //{
                        sql = "select top 1 loc_no from asr_loc_mast where row1=" + li_crnrow + " and loc_sts='O' order by " + orderBy;
                        //}
                        //else
                        //{
                        //    sql = "select top 1 loc_no from asr_loc_mast where row1=" + li_crnrow + " and loc_sts='O' order by " + orderBy;
                        //}
                        SqlConnection sqlconn = new SqlConnection(sqlcon);
                        sqlconn.Open();
                        SqlDataAdapter sqlap = new SqlDataAdapter(sql, sqlconn);
                        DataSet ds = new DataSet();
                        sqlap.Fill(ds);
                        DataView dv1 = new DataView(ds.Tables[0]);
                        sqlap.Dispose();
                        sqlconn.Dispose();
                        //sqlconn.Close();
                        foreach (DataRowView drv in dv1)
                        {
                            locno = drv[0].ToString();
                            break;
                        }
                    }
                }
                //if (locno != "" && int.Parse(locno.Substring(0, 2)) < 3 && (stano == 1304 || stano == 1205))
                //{//1204站无法入库1号堆垛机
                //    locno = "";
                //}
                //if (crn_no > 0 && crn_no != li_crn)
                //{//先入品分配新库位,必须同一台堆垛机
                //    locno = "";
                //}
                if (Common.AlarmCode[li_crn - 1] > 0 || Common.Mode[li_crn - 1] != 3)
                { //堆垛机异常或者非自动,寻找下一个库位
                    locno = "";
                }
                //int seqno = Common.GetStnSeq(e_staNo);
                //int plcno = stnType - 1;
                //string s_loading = Common.plc_s_loading[plcno, seqno];
                //if (s_loading == "Y")
                //{//堆垛机入库站点有物,寻找下一个
                //    locno = "";
                //}
                i++;
                if (i > li_crn_qty * 2)
                {
                    break;
                }
            } while (locno == "");
            if (locno != "")
            {
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                string sql = "update dbo.asr_row_lastno set current_row='" + li_crnrow + "',modi_time='" + DateTime.Now.ToString() + "' ";
                SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                sqlcmd.Transaction = sqltrans;
                try
                {
                    sqlcmd.ExecuteNonQuery();
                    sqltrans.Commit();
                }
                catch (SqlException r)
                {
                    //MessageBox.Show("更新[asr_row_lastno]错误!", "错误");
                    sqltrans.Rollback();
                    sqlcmd.Dispose();
                    sqlconn.Dispose();
                    locno = "";
                }
            }
            return locno;
        }
        /// <summary>
        /// æ ¹æ®ä½œä¸šç±»åž‹å¾—到站点编号
        /// </summary>
        /// <param name="type">入库类型</param>
        /// <param name="crnno">堆垛机号</param>
        /// <param name="stnno">站点号</param>
        /// <returns></returns>
        public static int getIoStaNo(int type, int crnno, int stnno)
        {
            int e_staNo = 0;
            try
            {
                string sql = "select crn_stn from asr_sta_desc ";
                sql += " where type_no=" + type + " and stn_no=" + stnno + " and crn_no=" + crnno;
                DataView dv_crn_stn = Common.ExecAsrsSelect(sql);
                if (dv_crn_stn != null || dv_crn_stn.Count > 0)
                {
                    foreach (DataRowView drow in dv_crn_stn)
                    {
                        e_staNo = int.Parse(drow[0].ToString());
                    }
                }
            }
            catch (Exception)
            {
            }
            return e_staNo;
        }
        /// <summary>
        /// åˆ¤æ–­å †åž›æœºæ˜¯å¦å¯ç”¨
        /// </summary>
        /// <param name="crn"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static string ChkCrnEnable(int crnno, string type)
        {
            DataView dv = null;
            string ls_in = "N", ls_ou = "N";
            dv = ExecAsrsSelect("select in_enable,out_enable from asr_bas_crnp where crn_no=" + crnno);
            foreach (DataRowView drv in dv)
            {
                ls_in = drv[0].ToString();
                ls_ou = drv[1].ToString();
            }
            if (type == "I")
            {
                return ls_in;
            }
            else if (type == "O")
            {
                return ls_ou;
            }
            else
            {
                return "N";
            }
        }
        //public static string GetRow(string row)
        //{
        //    if (row == "01")
        //    {
        //        return "01";
        //    }
        //    else if (row == "02")
        //    {
        //        return "02";
        //    }
        //    //else if (row == "03")
        //    //{
        //    //    return "01";
        //    //}
        //    //else if (row == "04")
        //    //{
        //    //    return "02";
        //    //}
        //    //else if (row == "05")
        //    //{
        //    //    return "01";
        //    //}
        //    //else if (row == "06")
        //    //{
        //    //    return "02";
        //    //}
        //    else
        //    {
        //        return "";
        //    }
        //}
        /// <summary>
        /// æ ¹æ®å †åž›æœºå¼‚常码得到异常描述
        /// </summary>
        /// <param name="error_code"></param>
        /// <returns></returns>
        public static string GetErr(int error_code)
        {
            string result = "";
            switch (error_code)
            {
                case 1:
                    result = "左超限";
                    break;
                case 2:
                    result = "右超限";
                    break;
                case 3:
                    result = "前超限";
                    break;
                case 4:
                    result = "后超限";
                    break;
                case 5:
                    result = "高超限";
                    break;
                case 6:
                    result = "取货载货台有货";
                    break;
                case 7:
                    result = "放货载货台无货";
                    break;
                case 8:
                    result = "取货左货格无货";
                    break;
                case 9:
                    result = "取货右货格无货";
                    break;
                case 10:
                    result = "放货左一有货";
                    break;
                case 11:
                    result = "放货右一有货";
                    break;
                case 12:
                    result = "取左二货格无货";
                    break;
                case 13:
                    result = "取右二货格无货";
                    break;
                case 14:
                    result = "放货左二货格有货";
                    break;
                case 15:
                    result = "放货右二货格有货";
                    break;
                case 16:
                    result = "左二取货左一有货";
                    break;
                case 17:
                    result = "右二取货右一有货";
                    break;
                case 18:
                    result = "左取货失败";
                    break;
                case 19:
                    result = "右取货失败";
                    break;
                case 20:
                    result = "左放货失败";
                    break;
                case 21:
                    result = "右放货失败";
                    break;
                case 22:
                    result = "货叉运行超时";
                    break;
                case 23:
                    result = "货叉断路器跳闸";
                    break;
                case 24:
                    result = "货叉变频器报警";
                    break;
                case 25:
                    result = "货叉编码器故障";
                    break;
                case 26:
                    result = "货叉伸叉故障";
                    break;
                case 27:
                    result = "层运行货叉不在中位";
                    break;
                case 28:
                    result = "列运行货叉不在中位";
                    break;
                case 29:
                    result = "货叉中位开关故障";
                    break;
                case 30:
                    result = "货叉变频器通讯故障";
                    break;
                case 31:
                    result = "货叉编码器通讯故障";
                    break;
                case 32:
                    result = "伸叉超出左极限";
                    break;
                case 33:
                    result = "伸叉超出右极限";
                    break;
                case 34:
                    result = "入左二货格货时左一货格有货";
                    break;
                case 35:
                    result = "入右二货格货时右一货格有货";
                    break;
                case 36:
                    result = "货叉右侧回中停止位置错误";
                    break;
                case 37:
                    result = "货叉左侧回中停止位置错误";
                    break;
                case 38:
                    result = "货叉左侧极限停止位置错误";
                    break;
                case 39:
                    result = "货叉右侧极限停止位置错误";
                    break;
                case 40:
                    result = "面板急停";
                    break;
                case 41:
                    result = "远程急停";
                    break;
                case 42:
                    result = "主接触器控制回路故障";
                    break;
                case 43:
                    result = "超重保护";
                    break;
                case 44:
                    result = "松绳保护";
                    break;
                case 45:
                    result = "限速保护";
                    break;
                case 46:
                    result = "层停止位置错误";
                    break;
                case 47:
                    result = "列停止位置错误";
                    break;
                case 48:
                    result = "列停止位置错误";
                    break;
                case 49:
                    result = "接收列超限";
                    break;
                case 50:
                    result = "接收层超限";
                    break;
                case 51:
                    result = "接收层超限";
                    break;
                case 52:
                    result = "行走后退极限";
                    break;
                case 53:
                    result = "提升上极限";
                    break;
                case 54:
                    result = "提升下极限";
                    break;
                case 55:
                    result = "行走运行超时";
                    break;
                case 56:
                    result = "提升运行超时";
                     break;
                      case 57:
                     result = "行走断路器跳闸";
                     break;
                      case 58:
                     result = "提升断路器跳闸";
                     break;
                      case 59:
                     result = "行走变频器故障";
                     break;
                      case 60:
                     result = "提升变频器故障";
                     break;
                      case 61:
                     result = "行走测距/条码故障";
                     break;
                      case 62:
                     result = "提升测距/条码故障";
                     break;
                      case 63:
                     result = "行走测距/条码被挡";
                     break;
                      case 64:
                     result = "提升测距/条码被挡";
                     break;
                      case 65:
                     result = "上升减速光电故障";
                     break;
                      case 66:
                     result = "下降减速光电故障";
                     break;
                      case 67:
                     result = "提升原点光电故障";
                     break;
                      case 68:
                     result = "行走前减速光电故障";
                     break;
                      case 69:
                     result = "行走后减速光电故障";
                     break;
                      case 70:
                     result = "行走原点光电故障";
                     break;
                      case 71:
                     result = "与输送机通讯故障";
                     break;
                      case 72:
                     result = "升降超出最小层";
                     break;
                      case 73:
                     result = "升降超出最大层";
                     break;
                      case 74:
                     result = "行走超出最小列";
                     break;
                      case 75:
                     result = "行走超出最大列";
                     break;
                      case 76:
                     result = "接收排错误";
                     break;
                      case 77:
                     result = "起始站货格被禁用";
                     break;
                      case 78:
                     result = "目的站货格被禁用";
                     break;
                      case 79:
                     result = "行走抱闸故障";
                     break;
                      case 80:
                     result = "提升抱闸故障";
                     break;
                      case 81:
                     result = "安全门打开故障";
                     break;
                default:
                    result = "";
                    break;
            }
            return result;
        }
        ////判断数字是否合法
        //public static bool ChkFloat(string str)
        //{
        //    try
        //    {
        //        float f = (float)Convert.ToDouble(str);
        //        return true;
        //    }
        //    catch (Exception e)
        //    {
        //        return false;
        //    }
        //}
        ////判断整数是否合法
        //public static bool ChkInt(string str)
        //{
        //    try
        //    {
        //        int f = Convert.ToInt32(str);
        //        return true;
        //    }
        //    catch (Exception e)
        //    {
        //        return false;
        //    }
        //}
        ////得到地址
        //public static string GetAddr(int li)
        //{
        //    string addr = "";
        //    try
        //    {
        //        switch (li)
        //        {
        //            case 0:
        //                return addr = "1030";
        //            case 1:
        //                return addr = "1032";
        //            case 2:
        //                return addr = "1034";
        //            case 3:
        //                return addr = "1036";
        //            case 4:
        //                return addr = "1038";
        //            case 5:
        //                return addr = "1040";
        //            case 6:
        //                return addr = "1042";
        //            default:
        //                return addr = "";
        //        }
        //    }
        //    catch (Exception e)
        //    {
        //        return addr = "";
        //    }
        //}
        /// <summary>
        /// æŸ¥è¯¢erp数据
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static DataView ExecErpSelect(string sql)
        {
            try
            {
                OracleConnection sqlerp = new OracleConnection(erpcon);
                sqlerp.Open();
                OracleDataAdapter odasrs = new OracleDataAdapter(sql, sqlerp);
                DataSet dserp = new DataSet();
                odasrs.Fill(dserp);
                DataView dverp = new DataView(dserp.Tables[0]);
                odasrs.Dispose();
                sqlerp.Dispose();
                sqlerp.Close();
                return dverp;
            }
            catch (SqlException em)
            {
                return null;
            }
        }
        /// <summary>
        /// æ‰§è¡ŒERP数据更新sql语句
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static bool ExecERPModify(string sql)
        {
            bool result = false;
            try
            {
                OracleConnection sqlconn = new OracleConnection(erpcon);
                sqlconn.Open();
                OracleTransaction sqltrans = sqlconn.BeginTransaction();
                OracleCommand sqlcmd = new OracleCommand();
                //SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                //sqlcmd.Transaction = sqltrans;
                string[] arraySql = sql.Split(';');
                try
                {
                    for (int i = 0; i < arraySql.Length; i++)
                    {
                        if (arraySql[i] != "")
                        {
                            sqlcmd.CommandText = arraySql[i];
                            sqlcmd.Connection = sqlconn;
                            sqlcmd.Transaction = sqltrans;
                            sqlcmd.ExecuteNonQuery();
                        }
                    }
                    sqltrans.Commit();
                    result = true;
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    result = false;
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqltrans.Dispose();
                    sqlconn.Dispose();
                    //sqlconn.Close();
                }
            }
            catch (Exception r)
            {
                return false;
            }
            return result;
        }
        /////-------------------------------从asrs数据库中执行查询功能返回数据集----------------
        public static DataView ExecAsrsSelect(string sql)
        {
            try
            {
                SqlConnection sqlasrs = new SqlConnection(sqlcon);
                sqlasrs.Open();
                SqlDataAdapter odasrs = new SqlDataAdapter(sql, sqlasrs);
                DataSet dsasrs = new DataSet();
                odasrs.Fill(dsasrs);
                DataView dvasrs = new DataView(dsasrs.Tables[0]);
                odasrs.Dispose();
                sqlasrs.Dispose();
                sqlasrs.Close();
                return dvasrs;
            }
            catch (SqlException em)
            {
                return null;
            }
        }
        public static DataView ExecAsrsSelect(string sql, out string err)
        {
            err = null;
            try
            {
                SqlConnection sqlasrs = new SqlConnection(sqlcon);
                sqlasrs.Open();
                SqlDataAdapter odasrs = new SqlDataAdapter(sql, sqlasrs);
                DataSet dsasrs = new DataSet();
                odasrs.Fill(dsasrs);
                DataView dvasrs = new DataView(dsasrs.Tables[0]);
                odasrs.Dispose();
                sqlasrs.Dispose();
                sqlasrs.Close();
                return dvasrs;
            }
            catch (SqlException em)
            {
                err = "查询sql语句失败:" + em.Message;
                //MessageBox.Show("查询sql语句失败:" + em.Message + "\r\n" + sql);
                return null;
            }
        }
        /////-------------------------------从asrs数据库中执行查询功能返回数据量----------------
        public static int ExecAsrsSelect1(string sql)
        {
            int li_count1 = 0;
            SqlConnection sqlasrs0 = new SqlConnection(sqlcon);
            sqlasrs0.Open();
            SqlCommand ocasrs = new SqlCommand(sql, sqlasrs0);
            li_count1 = Convert.ToInt32(ocasrs.ExecuteScalar());
            sqlasrs0.Dispose();
            ocasrs.Dispose();
            sqlasrs0.Close();
            return li_count1;
        }
        /////-------------------------------从asrs数据库中执行异动功能(提交)----------------
        /// <summary>
        /// æ‰§è¡Œsql更新语句(insert、delete、update)
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public static bool ExecAsrsModify(string sql)
        {
            bool result = false;
            try
            {
                SqlConnection sqlconn = new SqlConnection(sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand();
                //SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                //sqlcmd.Transaction = sqltrans;
                string[] arraySql = sql.Split(';');
                try
                {
                    for (int i = 0; i < arraySql.Length; i++)
                    {
                        if (arraySql[i] != "")
                        {
                            sqlcmd.CommandText = arraySql[i];
                            sqlcmd.Connection = sqlconn;
                            sqlcmd.Transaction = sqltrans;
                            sqlcmd.ExecuteNonQuery();
                        }
                    }
                    sqltrans.Commit();
                    result = true;
                }
                catch (SqlException em)
                {
                    WriteLogFile("WcsError", "Common/ExecAsrsModify--执行SQL语句发生异常:" + em.Message + "\r\n" + sql);
                    sqltrans.Rollback();
                    result = false;
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqltrans.Dispose();
                    sqlconn.Dispose();
                    //sqlconn.Close();
                }
            }
            catch (Exception r)
            {
                return false;
            }
            return result;
        }
        ///////-------------------------------从asrs数据库中执行异动功能(未提交)----------------
        //public static bool ExecAsrsModify1(string sql)
        //{
        //    bool result = false;
        //    SqlConnection sqlasrs1 = new SqlConnection(sqlcon);
        //    sqlasrs1.Open();
        //    SqlTransaction otasrs = sqlasrs1.BeginTransaction();
        //    SqlCommand ocom = new SqlCommand(sql, sqlasrs1);
        //    ocom.Transaction = otasrs;
        //    try
        //    {
        //        ocom.ExecuteNonQuery();
        //        //otasrs.Commit();
        //        result = true;
        //    }
        //    catch (SqlException t)
        //    {
        //        otasrs.Rollback();
        //        result = false;
        //    }
        //    finally
        //    {
        //        ocom.Dispose();
        //        otasrs.Dispose();
        //        sqlasrs1.Dispose();
        //        sqlasrs1.Close();
        //    }
        //    return result;
        //}
        ///////-------------------------------从asrs数据库中执行异动功能(两个表),同步执行----------------
        //public static bool ExecAsrsModifyByMD(string sql, string sql1)
        //{
        //    bool result = false;
        //    SqlConnection sqlasrs1 = new SqlConnection(sqlcon);
        //    sqlasrs1.Open();
        //    SqlTransaction otasrs = sqlasrs1.BeginTransaction();
        //    SqlCommand ocom = new SqlCommand(sql, sqlasrs1);
        //    SqlCommand ocom1 = new SqlCommand(sql1, sqlasrs1);
        //    ocom.Transaction = otasrs;
        //    ocom1.Transaction = otasrs;
        //    try
        //    {
        //        ocom.ExecuteNonQuery();
        //        ocom1.ExecuteNonQuery();
        //        otasrs.Commit();
        //        result = true;
        //    }
        //    catch (SqlException t)
        //    {
        //        otasrs.Rollback();
        //        result = false;
        //    }
        //    finally
        //    {
        //        ocom.Dispose();
        //        otasrs.Dispose();
        //        sqlasrs1.Dispose();
        //        sqlasrs1.Close();
        //    }
        //    return result;
        //}
        ///////-------------------------------从asrs数据库中执行异动功能(4个表),同步执行----------------
        //public static bool ExecAsrsModifyByMD(string sql, string sql1, string sql2, string sql3)
        //{
        //    bool result = false;
        //    SqlConnection sqlasrs1 = new SqlConnection(sqlcon);
        //    sqlasrs1.Open();
        //    SqlTransaction otasrs = sqlasrs1.BeginTransaction();
        //    SqlCommand ocom = new SqlCommand(sql, sqlasrs1);
        //    SqlCommand ocom1 = new SqlCommand(sql1, sqlasrs1);
        //    SqlCommand ocom2 = new SqlCommand(sql2, sqlasrs1);
        //    SqlCommand ocom3 = new SqlCommand(sql3, sqlasrs1);
        //    ocom.Transaction = otasrs;
        //    ocom1.Transaction = otasrs;
        //    ocom2.Transaction = otasrs;
        //    ocom3.Transaction = otasrs;
        //    try
        //    {
        //        ocom.ExecuteNonQuery();
        //        ocom1.ExecuteNonQuery();
        //        ocom2.ExecuteNonQuery();
        //        ocom3.ExecuteNonQuery();
        //        otasrs.Commit();
        //        result = true;
        //    }
        //    catch (SqlException t)
        //    {
        //        otasrs.Rollback();
        //        result = false;
        //    }
        //    finally
        //    {
        //        ocom.Dispose();
        //        otasrs.Dispose();
        //        sqlasrs1.Dispose();
        //        sqlasrs1.Close();
        //    }
        //    return result;
        //}
        /////-------------------------------从asrs数据库中执行异动功能(5个表),同步执行----------------
        public static bool ExecAsrsModifyByMD(string sql, string sql1, string sql2, string sql3, string sql4)
        {
            bool result = false;
            SqlConnection sqlasrs1 = new SqlConnection(sqlcon);
            sqlasrs1.Open();
            SqlTransaction otasrs = sqlasrs1.BeginTransaction();
            SqlCommand ocom = new SqlCommand(sql, sqlasrs1);
            SqlCommand ocom1 = new SqlCommand(sql1, sqlasrs1);
            SqlCommand ocom2 = new SqlCommand(sql2, sqlasrs1);
            SqlCommand ocom3 = new SqlCommand(sql3, sqlasrs1);
            SqlCommand ocom4 = new SqlCommand(sql4, sqlasrs1);
            ocom.Transaction = otasrs;
            ocom1.Transaction = otasrs;
            ocom2.Transaction = otasrs;
            ocom3.Transaction = otasrs;
            ocom4.Transaction = otasrs;
            try
            {
                ocom.ExecuteNonQuery();
                ocom1.ExecuteNonQuery();
                ocom2.ExecuteNonQuery();
                ocom3.ExecuteNonQuery();
                ocom4.ExecuteNonQuery();
                otasrs.Commit();
                result = true;
            }
            catch (SqlException t)
            {
                otasrs.Rollback();
                result = false;
            }
            finally
            {
                ocom.Dispose();
                otasrs.Dispose();
                sqlasrs1.Dispose();
                sqlasrs1.Close();
            }
            return result;
        }
        ///////-------------------------------从ASRS数据库中执行查询功能返回数据量----------------
        //public static int ExecASRSSelect1(string sql)
        //{
        //    int li_count1 = 0;
        //    SqlConnection sqlasrs = new SqlConnection(sqlcon);
        //    sqlasrs.Open();
        //    SqlCommand ocerp = new SqlCommand(sql, sqlasrs);
        //    li_count1 = Convert.ToInt32(ocerp.ExecuteScalar());
        //    ocerp.Dispose();
        //    sqlasrs.Dispose();
        //    sqlasrs.Close();
        //    return li_count1;
        //}
        /// <summary>
        /// æ ¹æ®åº“位状态代号返回库位状态名称
        /// </summary>
        /// <param name="locsts"></param>
        /// <returns></returns>
        public static string getlocsts(string locsts)
        {
            string locstsname = "";
            switch (locsts)
            {
                case "O":
                    locstsname = "O-空库位";
                    break;
                case "F":
                    locstsname = "F-在库";
                    break;
                case "S":
                    locstsname = "S-入库预约中";
                    break;
                case "R":
                    locstsname = "R-出库预约中";
                    break;
                case "P":
                    locstsname = "P-拣料/并板/盘点出库预约中";
                    break;
                case "L":
                    locstsname = "L-拣料库位空载中";
                    break;
                case "M":
                    locstsname = "M-拣料库位满载中";
                    break;
                case "Q":
                    locstsname = "Q-拣料/并板/盘点再入库预约中";
                    break;
                case "X":
                    locstsname = "X-禁用";
                    break;
                case "D":
                    locstsname = "D-空栈板";
                    break;
                default:
                    locstsname = "O-空库位";
                    break;
            }
            return locstsname;
        }
        /// <summary>
        /// æ ¹æ®å·¥ä½œçŠ¶æ€ä»£å·å¾—åˆ°å·¥ä½œçŠ¶æ€åç§°
        /// </summary>
        /// <param name="sts"></param>
        /// <returns></returns>
        public static string Getwrksts(string sts)
        {
            string wrkstsname = "";
            switch (sts)
            {
                case "1":
                    wrkstsname = "1.生成入库ID";
                    break;
                case "2":
                    wrkstsname = "2.设备上移动";
                    break;
                case "3":
                    wrkstsname = "3.堆垛机入库中";
                    break;
                case "4":
                    wrkstsname = "4.堆垛机入库完成";
                    break;
                case "5":
                    wrkstsname = "5.入库回报完成";
                    break;
                //case "6":
                //    wrkstsname = "6.2号堆垛机站到站中";
                //    break;
                //case "7":
                //    return "7.5站到6站移动中";
                //    break;
                //case "8":
                //    return "8.7站到8站移动中";
                //    break;
                //case "9":
                //    return "9.2号堆垛机站到站完成";
                //    break;
                case "11":
                    wrkstsname = "11.生成出库ID";
                    break;
                case "12":
                    wrkstsname = "12.堆垛机出库中";
                    break;
                case "13":
                    wrkstsname = "13.空出库";
                    break;
                case "14":
                    wrkstsname = "14.堆垛机出库完成";
                    break;
                case "15":
                    wrkstsname = "15.出库回报完成";
                    break;
                case "16":
                    wrkstsname = "16.LED指令完成";
                    break;
            }
            return wrkstsname;
        }
        /// <summary>
        /// æ ¹æ®IO类型代号得到IO名称
        /// </summary>
        /// <param name="sts"></param>
        /// <returns></returns>
        public static string Getiotype(string sts)
        {
            string iotypename = "";
            switch (sts)
            {
                case "1":
                    iotypename = "1.入库";
                    break;
                case "6":
                    iotypename = "6.退库";
                    break;
                case "10":
                    iotypename = "10.空桶入库";
                    break;
                case "110":
                    iotypename = "110.空桶出库";
                    break;
                case "101":
                    iotypename = "101.全板出库";
                    break;
                case "103":
                    iotypename = "103.拣料出库";
                    break;
                case "104":
                    iotypename = "104.并板出库";
                    break;
                case "107":
                    iotypename = "107.盘点出库";
                    break;
                case "53":
                    iotypename = "53.拣料再入库";
                    break;
                case "57":
                    iotypename = "57.盘点再入库";
                    break;
                case "54":
                    iotypename = "54.并板再入库";
                    break;
            }
            return iotypename;
        }
        /// <summary>
        /// æ ¹æ®æ‹£æ–™ç«™å¾—到再入库堆垛机站点
        /// </summary>
        /// <param name="crn"></param>
        /// <param name="stn"></param>
        /// <returns></returns>
        public static int GetRestoreStnByPick(int crn, int stn)
        {
            int stnno = 0;
            switch (crn)
            {
                case 1:
                    stnno = 106;
                    break;
                case 2:
                    stnno = 120;
                    break;
                case 3:
                    stnno = 133;
                    break;
            }
            return stnno;
        }
        /// <summary>
        /// æ ¹æ®ç«™å·å¾—到对应吊车站序号
        /// </summary>
        /// <param name="stn"></param>
        /// <returns></returns>
        public static int GetCrnStnSeq(int stn)
        {
            int crnstn = 0;
            switch (stn)
            {
                case 100:
                    crnstn = 1;
                    break;
                case 200:
                    crnstn = 2;
                    break;
                case 104:
                    crnstn = 1;
                    break;
                case 204:
                    crnstn = 2;
                    break;
                default:
                    crnstn = 0;
                    break;
            }
            return crnstn;
        }
        /// <summary>
        /// æ ¹æ®å †åž›æœºå…¥åº“站号得到站点编号
        /// </summary>
        /// <param name="crn">堆垛机号</param>
        /// <param name="seq">堆垛机站点编号</param>
        /// <returns>输送机站点编号</returns>
        public static int GetStnSeqNo(int crn, int seq)
        {
            int stnno = 0;
            switch (crn)
            {
                case 1:
                    switch (seq)
                    {
                        case 1:
                            stnno = 104;
                            break;
                        //case 2:
                        //    stnno = 104;
                        //    break;
                    }
                    break;
                case 2:
                    switch (seq)
                    {
                        case 1:
                            stnno = 204;
                            break;
                    }
                    break;
                default:
                    stnno = seq;
                    break;
            }
            return stnno;
        }
        /// <summary>
        /// åˆ¤æ–­å­—符串是否数字
        /// </summary>
        /// <param name="ls_string"></param>
        /// <returns></returns>
        public static bool ChkStrtoInt(string ls_string)
        {
            bool result = false;
            int i = 0, i_len = 0;
            i_len = ls_string.Length;
            for (i = 0; i < i_len; i++)
            {
                if (ls_string[i] >= '0' && ls_string[i] <= '9')
                // if (Convert.ToInt32(ls_string[i].ToString()) >= 0 && Convert.ToInt32(ls_string[i].ToString()) <= 9)
                {
                    result = true;
                }
                else
                {
                    result = false;
                    break;
                }
            }
            return result;
        }
        /// <summary>
        /// å†™æ—¥å¿—文件
        /// </summary>
        /// <param name="Memo">写入内容</param>
        public static void WriteLogFile(string fileName, string Memo)
        {
            DateTime dt = DateTime.Now;
            string FileName = Application.StartupPath + "\\log\\" + fileName + string.Format("{0:yyyyMMdd}", dt) + ".log";
            try
            {
                if (!Directory.Exists(Application.StartupPath + "\\log"))
                {
                    Directory.CreateDirectory(Application.StartupPath + "\\log");
                }
                StreamWriter fs1 = new StreamWriter(FileName, true);//创建写入文件
                //StreamWriter sw = new StreamWriter(fs1);
                fs1.WriteLine("【" + DateTime.Now.ToString() + "】" + Memo);//开始写入值
                //sw.Close();
                fs1.Close();
            }
            catch (Exception)
            {
            }
        }
        /// <summary>
        /// DateTime时间格式转换为Unix时间戳格式
        /// </summary>
        /// <param name=”time”></param>
        /// <returns></returns>
        public static int ConvertDateTimeInt(System.DateTime time)
        {
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
            return (int)(time - startTime).TotalSeconds;
        }
        ///// <summary>
        ///// åˆ¤æ–­å·¥ä½œæ¡£ä¸­å…¥åº“资料数量
        ///// </summary>
        ///// <returns></returns>
        //public static int GetWrkInCount()
        //{
        //    int result = 1000;
        //    try
        //    {
        //        string sql = "select * from asr_wrk_mast where wrk_sts>0 and wrk_sts<5";
        //        result = Common.ExecAsrsSelect1(sql);
        //    }
        //    catch (Exception)
        //    {
        //    }
        //    return result;
        //}
        ///// <summary>
        ///// åˆ¤æ–­å·¥ä½œæ¡£ä¸­å‡ºåº“资料数量
        ///// </summary>
        ///// <returns></returns>
        //public static int GetWrkOutCount()
        //{
        //    int result = 1000;
        //    try
        //    {
        //        string sql = "select * from asr_wrk_mast where wrk_sts>11 and wrk_sts<15";
        //        result = Common.ExecAsrsSelect1(sql);
        //    }
        //    catch (Exception)
        //    {
        //    }
        //    return result;
        //}
        ///// <summary>
        ///// åˆ¤æ–­å·¥ä½œæ¡£ä¸­èµ„料数量
        ///// </summary>
        ///// <returns></returns>
        //public static int GetWrkCount()
        //{
        //    int result = 1000;
        //    try
        //    {
        //        string sql = "select * from asr_wrk_mast where wrk_sts<15";
        //        result = Common.ExecAsrsSelect1(sql);
        //    }
        //    catch (Exception)
        //    {
        //    }
        //    return result;
        //}
        ///// <summary>
        ///// åˆ¤æ–­åº“存档中库存资料是否存在
        ///// </summary>
        ///// <returns></returns>
        //public static int GetStkCount(string boxId)
        //{
        //    int result = 1000;
        //    try
        //    {
        //        string sql = "select * from asr_loc_mast where boxId='" + boxId + "'";
        //        result = Common.ExecAsrsSelect1(sql);
        //    }
        //    catch (Exception)
        //    {
        //    }
        //    return result;
        //}
        /// <summary>
        /// æ£€æŸ¥æ•°æ®åº“连接是否正常
        /// </summary>
        /// <returns></returns>
        public static bool CheckDbConnect()
        {
            bool result = false;
            SqlConnection conn = new SqlConnection(Common.sqlcon);
            try
            {
                if (conn.State == ConnectionState.Closed)
                    conn.Open();
                else if (conn.State == ConnectionState.Broken)
                {
                    conn.Close();
                    conn.Open();
                }
                result = true;
            }
            catch (Exception em)
            {
                //MessageBox.Show("数据库连接失败。" + em.Message, "错误");
            }
            finally
            {
                conn.Close();
            }
            return result;
        }
        /// <summary>
        /// æ£€æµ‹ç«¯å£æ˜¯å¦å ç”¨
        /// </summary>
        /// <param name="port"></param>
        /// <returns></returns>
        public static bool PortInUse(int port)
        {
            bool inUse = false;
            IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
            IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners();
            foreach (IPEndPoint endPoint in ipEndPoints)
            {
                if (endPoint.Port == port)
                {
                    inUse = true;
                    break;
                }
            }
            return inUse;
        }
        /// <summary>
        /// æ ¹æ®è¾“送机站点获取对应库位号
        /// </summary>
        /// <param name="i_stn">堆垛机状态值</param>
        /// <returns>库位号</returns>
        public static string GetLocByStn(int i_stn)
        {
            string loc_no = "0000000";
            switch (i_stn)
            {
                case 100:
                    loc_no = "0200101";
                    break;
                case 104:
                    loc_no = "0300101";
                    break;
                case 200:
                    loc_no = "0400101";
                    break;
                case 204:
                    loc_no = "0500101";
                    break;
                default:
                    loc_no = "0000000";
                    break;
            }
            return loc_no;
        }
        /// <summary>
        /// æ ¹æ®åº“位号获取对应输送机站点编号
        /// </summary>
        /// <param name="i_stn">堆垛机状态值</param>
        /// <returns>库位号</returns>
        public static int GetStnByLoc(string loc_no)
        {
            int i_stn = 0;
            switch (loc_no)
            {
                case "0200101":
                    i_stn = 100;
                    break;
                case "0300101":
                    i_stn = 104;
                    break;
                case "0400101":
                    i_stn = 200;
                    break;
                case "0500101":
                    i_stn = 204;
                    break;
                default:
                    i_stn = 0;
                    break;
            }
            return i_stn;
        }
        #region å †åž›æœºå¼‚常列表
        /// <summary>
        /// æ ¹æ®å †åž›æœºå¼‚常码得到异常名称
        /// </summary>
        /// <param name="AlarmCode">堆垛机异常码</param>
        /// <returns>堆垛机异常名称</returns>
        public static string GetCrnErrorName(int AlarmCode)
        {
            string errorName = "";
            switch (AlarmCode)
            {
                case 0:
                    errorName = "";
                    break;
                case 1:
                    errorName = "主电源断路器断开";
                    break;
                case 2:
                    errorName = "相位变化或缺相";
                    break;
                case 3:
                    errorName = "内部 24V ä¾›ç”µå¼‚常";
                    break;
                case 4:
                    errorName = "外部 24V ä¾›ç”µå¼‚常";
                    break;
                case 5:
                    errorName = "24V总断路器异常";
                    break;
                case 6:
                    errorName = "总交流接触器异常";
                    break;
                case 7:
                    errorName = "行走抱闸接触器异常";
                    break;
                case 8:
                    errorName = "起升抱闸接触器异常";
                    break;
                case 9:
                    errorName = "货叉抱闸接触器异常";
                    break;
                case 11:
                    errorName = "行走变频器报警";
                    break;
                case 12:
                    errorName = "起升变频器报警";
                    break;
                case 13:
                    errorName = "货叉变频器报警";
                    break;
                case 14:
                    errorName = "行走马达保护器异常";
                    break;
                case 15:
                    errorName = "起升马达保护器异常";
                    break;
                case 16:
                    errorName = "货叉马达保护器异常";
                    break;
                case 18:
                    errorName = "货叉位置错误";
                    break;
                case 19:
                    errorName = "货叉触发左极限";
                    break;
                case 20:
                    errorName = "货叉触发右极限";
                    break;
                case 21:
                    errorName = "载货台货物左后超限";
                    break;
                case 22:
                    errorName = "载货台货物左前超限";
                    break;
                case 23:
                    errorName = "载货台货物右后超限";
                    break;
                case 24:
                    errorName = "载货台货物右前超限";
                    break;
                case 25:
                    errorName = "载货台货物左坍塌";
                    break;
                case 26:
                    errorName = "载货台货物左超高";
                    break;
                case 27:
                    errorName = "行走电机位置值未变动";
                    break;
                case 28:
                    errorName = "起升电机位置值未变动";
                    break;
                case 29:
                    errorName = "载货台货物右超高";
                    break;
                case 30:
                    errorName = "货叉电机位置值未变动";
                    break;
                case 32:
                    errorName = "载货台货物右坍塌";
                    break;
                case 33:
                    errorName = "行走激光丢失";
                    break;
                case 34:
                    errorName = "行走停准失败";
                    break;
                case 35:
                    errorName = "起升激光丢失";
                    break;
                case 36:
                    errorName = "起升停准失败";
                    break;
                case 37:
                    errorName = "货叉测距异常";
                    break;
                case 38:
                    errorName = "货叉停准失败";
                    break;
                case 39:
                    errorName = "变频器总线IO通讯断开";
                    break;
                case 42:
                    errorName = "行走电机运行超时";
                    break;
                case 43:
                    errorName = "起升电机运行超时";
                    break;
                case 44:
                    errorName = "货叉电机运行超时";
                    break;
                case 45:
                    errorName = "载货台安全回路断开";
                    break;
                case 47:
                    errorName = "柜门急停";
                    break;
                case 49:
                    errorName = "松绳保护开关触发";
                    break;
                case 51:
                    errorName = "外部急停或安全门打开";
                    break;
                case 53:
                    errorName = "相序保护器异常";
                    break;
                case 54:
                    errorName = "安全继电器异常";
                    break;
                case 55:
                    errorName = "水平极限开关被触发";
                    break;
                case 56:
                    errorName = "起升下极限开关触发";
                    break;
                case 57:
                    errorName = "起升超速保护开关触发";
                    break;
                case 58:
                    errorName = "起升上极限开关触发";
                    break;
                case 61:
                    errorName = "放货时货架有货";
                    break;
                case 62:
                    errorName = "自动模式无任务载货台有货";
                    break;
                case 63:
                    errorName = "放货后载货台有货";
                    break;
                case 64:
                    errorName = "取货后载货台无货";
                    break;
                case 66:
                    errorName = "目标位置未找到";
                    break;
                case 67:
                    errorName = "输送机不允许取货/放货";
                    break;
                case 69:
                    errorName = "任务地址错误";
                    break;
                case 71:
                    errorName = "上一任务未完成警告";
                    break;
                case 75:
                    errorName = "上位机下发急停";
                    break;
                case 76:
                    errorName = "电控柜门打开";
                    break;
                case 85:
                    errorName = "载货台远程IO断开";
                    break;
                case 87:
                    errorName = "触摸屏急停";
                    break;
                case 101:
                    errorName = "货叉在中位没有中位开关信号";
                    break;
                case 102:
                    errorName = "货叉在非中位有中位信号";
                    break;
                default:
                    errorName = "未知";
                    break;
            }
            return errorName;
        }
        #endregion
    }
}
version/STWCSMapEditor/WCS/CraneThread.cs
New file
@@ -0,0 +1,1810 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
using System.Threading;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
using com.force.json;
using DevComponents.DotNetBar.Controls;
using System.Drawing;
using System.Data;
using HslCommunication.Profinet.Siemens;
using HslCommunication;
using HslCommunication.Core.Net;
namespace WCS
{
    /// <summary>
    /// å †åž›æœºçº¿ç¨‹
    /// </summary>
    class CraneThread
    {
        //[DllImport("kernel32")]
        //private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
        //[DllImport("kernel32")]
        //private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
        main form1;
        //NetworkStream myNetworkStream;
        //Thread thr = null;
        delegate void displayresponse(string text);
        //int wrk_no = 0, sstnno = 0, dstnno = 0,type=0;
        //string type_cmd = "", slocno = "", dlocno = "";
        string recvStr = "";
        string crnip = "";
        int crnport = 0;
        int crnno = 0;
        //string headstr = "";
        //string testip = "";
        Thread trd = null;
        int i_crn_step = 0;
        //int i_crn_iotype = 0;
        public static string crn_cmd = "";
        delegate void SetTextCallback(string text);
        delegate void DisplayData(int type, int i);
        delegate void DisplaycrnstsData(int crn, int bay, int lev, double dist, double height, int err);
        delegate void SetTextCallback1();
        private SiemensS7Net siemensTcpNet = null;
        private OperateResult connect = null;
        #region ç”»é¢ä¸ŠåŒæ­¥æ˜¾ç¤ºæŽ§ä»¶
        //public DevComponents.DotNetBar.LabelX cmd;
        //public ListView crncmdlist;
        //public ListView crnslist;
        public ListView crnstslist;
        public ListBox tb;
        public DataGridViewX dgv_crnsts;
        public TextBoxX tb_sendtocrn;
        #endregion
        public CraneThread(int crn_no, string crnip, int crnport, main f)
        {
            try
            {
                this.crnip = crnip;
                this.crnno = crn_no;
                this.crnport = crnport;
                form1 = f;
                siemensTcpNet = new SiemensS7Net(SiemensPLCS.S1200);
                siemensTcpNet.IpAddress = this.crnip;
                siemensTcpNet.Port = this.crnport;
                siemensTcpNet.Rack = 0;
                siemensTcpNet.Slot = 0;
                siemensTcpNet.ConnectClose();
                trd = new Thread(new ThreadStart(this.ThreadTask));
                trd.IsBackground = true;
                trd.Start();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/CraneThread--堆垛机线程启动出错:" + em.Message);
            }
        }
        public void Destroy()
        {
            siemensTcpNet.ConnectClose();
            trd.Abort();
        }
        /// <summary>
        /// æ–­å¼€è¿žæŽ¥åŽï¼Œé‡æ–°è¿žæŽ¥
        /// </summary>
        /// <returns></returns>
        private bool ReConnect()
        {
            bool result = false;
            try
            {
                siemensTcpNet.ConnectClose();
                connect = siemensTcpNet.ConnectServer();
                if (connect.IsSuccess)
                {
                    result = true;
                    DisplayInfo("【" + DateTime.Now.ToString() + "】" + crnno + "号堆垛机重新连接PLC成功 ");
                }
                else
                {
                    DisplayInfo("【" + DateTime.Now.ToString() + "】" + crnno + "号堆垛机重新连接PLC失败---" + connect.ToMessageShowString());
                }
            }
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】" + crnno + "号堆垛机重新连接PLC失败---" + em.Message);
            }
            return result;
        }
        /// <summary>
        /// æ ¹æ®å †åž›æœºå‘½ä»¤åˆ¤æ–­ä½œä¸šç±»åž‹
        /// </summary>
        /// <param name="cmd">命令</param>
        private void ChkCrnCmd(string cmd)
        {
            int nkind = 0;
            try
            {
                nkind = Int32.Parse(cmd.Substring(0, 2));
                i_crn_step = nkind;
                Common.gi_crn_iotype[crnno - 1] = nkind;
                //i_crn_iotype = nkind;
            }
            catch (Exception em)
            {
                i_crn_step = 6;
                Common.WriteLogFile("WcsError", "CraneThread/ChkCrnCmd--根据命令判断作业类型出错:" + em.Message);
                //i_crn_iotype = 6;
            }
        }
        /// <summary>
        /// æ¸…除命令操作
        /// </summary>
        /// <param name="cmd"></param>
        private void Proc_ClearCmd(string cmd)
        {
            //int iotype = 0, i_srow = 0, i_sbay = 0, i_slev = 0, i_drow = 0, i_dbay = 0, i_dlev = 0;
            if (cmd == "" || cmd == null)
            {
                return;
            }
            try
            {
                int type = Int32.Parse(cmd.Substring(0, 2));
                //int wrkno = Int32.Parse(cmd.Substring(2, 4));
                if (type != 3) { return; }
                //iotype = 3;
                //i_srow = 0;//源row
                //i_sbay = 0;//源bay
                //i_slev = 0;//源lev
                //i_drow = 0;//目标rpw
                //i_dbay = 0;//目标bay
                //i_dlev = 0;//目标lev
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = 0;
                Common.crn_i_fstn[crnno - 1] = 0;
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = "";
                Common.crn_s_Tlocno[crnno - 1] = "";
                Common.crn_s_commandstr[crnno - 1] = "";
                Common.gs_crncmd[crnno - 1] = "";
                //WriteCrnData(iotype, i_srow, i_sbay, i_slev, i_drow, i_dbay, i_dlev);
                // ReadCrnData();
                //WriteCrnData(0, 0, 0, 0, 0, 0, 0, 0);
                OperateResult result = siemensTcpNet.Write("DB90.0", (short)1);
                Thread.Sleep(Common.ci_CRNtimeInterval);
                ReadCrnData();
                i_crn_step = 6;
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/Proc_ClearCmd--清除命令出错:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// å›žåŽŸç‚¹
        /// </summary>
        /// <param name="cmd"></param>
        private void Proc_RebackHp(string cmd)
        {
            if (Common.Mode[crnno - 1] != Common.ci_CRN_ONLINE || Common.CrnState[crnno - 1] != Common.ci_CRN_STS_IDLE
                || Common.AlarmCode[crnno - 1] != 0 || Common.TaskNo[crnno - 1] != 0)// || Common.Loaded[crnno - 1] != 0)
            {
                ReadCrnData();
                return;
            }
            int iotype = 0, i_srow = 0, i_sbay = 0, i_slev = 0, i_drow = 0, i_dbay = 0, i_dlev = 0;
            if (cmd == "" || cmd == null)
            {
                return;
            }
            try
            {   //07 0001 0100203 0200304
                int type = Int32.Parse(cmd.Substring(0, 2));
                int wrkno = Int32.Parse(cmd.Substring(2, 4));
                if (type != 4) { return; }
                iotype = 5;
                i_srow = Int32.Parse(cmd.Substring(6, 2));
                i_sbay = Int32.Parse(cmd.Substring(8, 3));
                i_slev = Int32.Parse(cmd.Substring(11, 2));
                i_drow = Int32.Parse(cmd.Substring(13, 2));
                i_dbay = Int32.Parse(cmd.Substring(15, 3));
                i_dlev = Int32.Parse(cmd.Substring(18, 2));
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_Wrkno[crnno - 1] = wrkno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_HP_POSITION;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = type;
                Common.crn_i_fstn[crnno - 1] = Common.GetStnByLoc(cmd.Substring(6, 7));
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = "";
                Common.crn_s_Tlocno[crnno - 1] = cmd.Substring(13, 7);
                Common.CrnState[crnno - 1] = 3;
                WriteCrnData(iotype, wrkno, i_srow, i_sbay, i_slev, i_drow, i_dbay, i_dlev);
                Thread.Sleep(Common.ci_CRNtimeInterval);
                ReadCrnData();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/Proc_RebackHp--回原点除命令出错:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// åæ ‡ç§»åЍ
        /// </summary>
        /// <param name="cmd"></param>
        private void Proc_CoordMove(string cmd)
        {
            if (Common.Mode[crnno - 1] != Common.ci_CRN_ONLINE || Common.CrnState[crnno - 1] != Common.ci_CRN_STS_IDLE
                || Common.AlarmCode[crnno - 1] != 0 || Common.TaskNo[crnno - 1] != 0)// || Common.Loaded[crnno - 1] != 0)
            {
                ReadCrnData();
                return;
            }
            int iotype = 0, i_srow = 0, i_sbay = 0, i_slev = 0, i_drow = 0, i_dbay = 0, i_dlev = 0;
            if (cmd == "" || cmd == null)
            {
                return;
            }
            try
            {   //07 0001 0100203 0200304
                int type = Int32.Parse(cmd.Substring(0, 2));
                int wrkno = Int32.Parse(cmd.Substring(2, 4));
                if (type != 5) { return; }
                Common.crn_i_Wrkno[crnno - 1] = wrkno;
                iotype = 7;
                i_srow = Int32.Parse(cmd.Substring(6, 2));
                i_sbay = Int32.Parse(cmd.Substring(8, 3));
                i_slev = Int32.Parse(cmd.Substring(11, 2));
                i_drow = Int32.Parse(cmd.Substring(13, 2));
                i_dbay = Int32.Parse(cmd.Substring(15, 3));
                i_dlev = Int32.Parse(cmd.Substring(18, 2));
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_Wrkno[crnno - 1] = wrkno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_MOVING;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = type;
                Common.crn_i_fstn[crnno - 1] = Common.GetStnByLoc(cmd.Substring(6, 7));
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = "";
                Common.crn_s_Tlocno[crnno - 1] = cmd.Substring(13, 7);
                Common.CrnState[crnno - 1] = 3;
                WriteCrnData(iotype, wrkno, i_srow, i_sbay, i_slev, i_drow, i_dbay, i_dlev);
                Thread.Sleep(Common.ci_CRNtimeInterval);
                ReadCrnData();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/Proc_CoordMove--坐标移动命令出错:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// ç§»åŠ¨è‡³ç«™
        /// </summary>
        /// <param name="cmd"></param>
        private void Proc_MoveToStn(string cmd)
        {
            if (Common.Mode[crnno - 1] != Common.ci_CRN_ONLINE || Common.CrnState[crnno - 1] != Common.ci_CRN_STS_IDLE
                || Common.AlarmCode[crnno - 1] != 0 || Common.TaskNo[crnno - 1] != 0)// || Common.Loaded[crnno - 1] != 0)
            {
                ReadCrnData();
                return;
            }
            int iotype = 0, i_srow = 0, i_sbay = 0, i_slev = 0, i_drow = 0, i_dbay = 0, i_dlev = 0;
            if (cmd == "" || cmd == null)
            {
                return;
            }
            try
            {   //07 0001 0100203 0200304
                int type = Int32.Parse(cmd.Substring(0, 2));
                int wrkno = Int32.Parse(cmd.Substring(2, 4));
                if (type != 9) { return; }
                iotype = 4;
                i_srow = 0;
                i_sbay = 0;
                i_slev = 0;
                i_drow = 0;
                i_dbay = 0;
                i_dlev = Int32.Parse(cmd.Substring(13, 4));
                i_srow = Int32.Parse(cmd.Substring(6, 2));
                i_sbay = Int32.Parse(cmd.Substring(8, 3));
                i_slev = Int32.Parse(cmd.Substring(11, 2));
                i_drow = Int32.Parse(cmd.Substring(13, 2));
                i_dbay = Int32.Parse(cmd.Substring(15, 3));
                i_dlev = Int32.Parse(cmd.Substring(18, 2));
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_Wrkno[crnno - 1] = wrkno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_MOVING;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = type;
                Common.crn_i_fstn[crnno - 1] = Common.GetStnByLoc(cmd.Substring(6, 7));
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = "";
                Common.crn_s_Tlocno[crnno - 1] = cmd.Substring(13, 7);
                Common.CrnState[crnno - 1] = 3;
                WriteCrnData(iotype, wrkno, i_srow, i_sbay, i_slev, i_drow, i_dbay, i_dlev);
                Thread.Sleep(Common.ci_CRNtimeInterval);
                ReadCrnData();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/Proc_MoveToStn--移动至站命令出错:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// å…¥åº“
        /// </summary>
        /// <param name="cmd"></param>
        private void Proc_Store(string cmd)
        {
            if (Common.Mode[crnno - 1] != Common.ci_CRN_ONLINE || Common.CrnState[crnno - 1] != Common.ci_CRN_STS_IDLE
                || Common.AlarmCode[crnno - 1] != 0 || Common.TaskNo[crnno - 1] != 0)// || Common.Loaded[crnno - 1] != 0)
            {
                //DisplayInfo("Crane abnormal or not in the computer models or not in standby state or crane not free,Please Check!" + " Datetime:" + DateTime.Now.ToString());//同步显示
                ReadCrnData();
                return;
            }
            int iotype = 0, i_srow = 0, i_sbay = 0, i_slev = 0, i_drow = 0, i_dbay = 0, i_dlev = 0;
            if (cmd == "" || cmd == null)
            {
                return;
            }
            try
            {   //07 0001 0100203 0200304
                int type = Int32.Parse(cmd.Substring(0, 2));
                int wrkno = Int32.Parse(cmd.Substring(2, 4));
                if (type != 7) { return; }
                iotype = 1;
                i_srow = Int32.Parse(cmd.Substring(6, 2));
                i_sbay = Int32.Parse(cmd.Substring(8, 3));
                i_slev = Int32.Parse(cmd.Substring(11, 2));
                i_drow = Int32.Parse(cmd.Substring(13, 2));
                i_dbay = Int32.Parse(cmd.Substring(15, 3));
                i_dlev = Int32.Parse(cmd.Substring(18, 2));
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_Wrkno[crnno - 1] = wrkno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_STORE_MOVE;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = type;
                Common.crn_i_fstn[crnno - 1] = Common.GetStnByLoc(cmd.Substring(6, 7));
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = "";
                Common.crn_s_Tlocno[crnno - 1] = cmd.Substring(13, 7);
                Common.CrnState[crnno - 1] = 3;
                WriteCrnData(iotype, wrkno, i_srow, i_sbay, i_slev, i_drow, i_dbay, i_dlev);
                Thread.Sleep(Common.ci_CRNtimeInterval);
                ReadCrnData();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/Proc_Store--入库命令出错:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// åŽ»ååŽŸç‚¹
        /// </summary>
        /// <param name="cmd"></param>
        private void Proc_RebackOHP(string cmd)
        {
            if (Common.Mode[crnno - 1] != Common.ci_CRN_ONLINE || Common.CrnState[crnno - 1] != Common.ci_CRN_STS_IDLE
                || Common.AlarmCode[crnno - 1] != 0 || Common.TaskNo[crnno - 1] != 0)// || Common.Loaded[crnno - 1] != 0)
            {
                ReadCrnData();
                return;
            }
            int iotype = 0, i_srow = 0, i_sbay = 0, i_slev = 0, i_drow = 0, i_dbay = 0, i_dlev = 0;
            if (cmd == "" || cmd == null)
            {
                return;
            }
            try
            {   //07 0001 0100203 0200304
                int type = Int32.Parse(cmd.Substring(0, 2));
                int wrkno = Int32.Parse(cmd.Substring(2, 4));
                if (type != 10) { return; }
                iotype = 7;// 6;
                i_srow = Int32.Parse(cmd.Substring(6, 2));
                i_sbay = Int32.Parse(cmd.Substring(8, 3));
                i_slev = Int32.Parse(cmd.Substring(11, 2));
                i_drow = Int32.Parse(cmd.Substring(13, 2));
                i_dbay = Int32.Parse(cmd.Substring(15, 3));
                i_dlev = Int32.Parse(cmd.Substring(18, 2));
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_Wrkno[crnno - 1] = wrkno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_MOVING;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = type;
                Common.crn_i_fstn[crnno - 1] = Common.GetStnByLoc(cmd.Substring(6, 7));
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = "";
                Common.crn_s_Tlocno[crnno - 1] = cmd.Substring(13, 7);
                Common.CrnState[crnno - 1] = 3;
                WriteCrnData(iotype, wrkno, i_srow, i_sbay, i_slev, i_drow, i_dbay, i_dlev);
                Thread.Sleep(Common.ci_CRNtimeInterval);
                ReadCrnData();
            }
            catch (Exception em)
            {
                Common.gs_crncmd[crnno - 1] = "";//必须赋空
                DisplayInfo("【" + DateTime.Now.ToString() + "】" + crnno + "去反原点命令失败: " + em.Message);//同步显示
                Common.WriteLogFile("WcsError", "CraneThread/Proc_RebackOHP--去反原点命令出错:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// å‡ºåº“
        /// </summary>
        /// <param name="cmd"></param>
        private void Proc_Retrieve(string cmd)
        {
            if (Common.Mode[crnno - 1] != Common.ci_CRN_ONLINE || Common.CrnState[crnno - 1] != Common.ci_CRN_STS_IDLE
                || Common.AlarmCode[crnno - 1] != 0 || Common.TaskNo[crnno - 1] != 0)// || Common.Loaded[crnno - 1] != 0)
            {
                DateTime.Now.ToString();//同步显示
                ReadCrnData();
                return;
            }
            int iotype = 0, i_srow = 0, i_sbay = 0, i_slev = 0, i_drow = 0, i_dbay = 0, i_dlev = 0;
            if (cmd == "" || cmd == null)
            {
                return;
            }
            try
            {
                int type = Int32.Parse(cmd.Substring(0, 2));
                int wrkno = Int32.Parse(cmd.Substring(2, 4));
                if (type != 8) { return; }
                iotype = 2;
                i_srow = Int32.Parse(cmd.Substring(6, 2));
                i_sbay = Int32.Parse(cmd.Substring(8, 3));
                i_slev = Int32.Parse(cmd.Substring(11, 2));
                i_drow = Int32.Parse(cmd.Substring(13, 2));
                i_dbay = Int32.Parse(cmd.Substring(15, 3));
                i_dlev = Int32.Parse(cmd.Substring(18, 2));
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_Wrkno[crnno - 1] = wrkno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_STORE_MOVE;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = type;
                Common.crn_i_fstn[crnno - 1] = 0;
                Common.crn_i_tstn[crnno - 1] = Common.GetStnByLoc(cmd.Substring(13, 7));
                Common.crn_s_Flocno[crnno - 1] = cmd.Substring(6, 7);
                Common.crn_s_Tlocno[crnno - 1] = "";
                Common.CrnState[crnno - 1] = 3;
                WriteCrnData(iotype, wrkno, i_srow, i_sbay, i_slev, i_drow, i_dbay, i_dlev);
                Thread.Sleep(Common.ci_CRNtimeInterval);
                ReadCrnData();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/Proc_Retrieve--出库命令出错:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// ç«™åˆ°ç«™æ“ä½œ
        /// </summary>
        /// <param name="cmd"></param>
        private void Proc_StnToStn(string cmd)
        {
            if (Common.Mode[crnno - 1] != Common.ci_CRN_ONLINE || Common.CrnState[crnno - 1] != Common.ci_CRN_STS_IDLE
                 || Common.AlarmCode[crnno - 1] != 0 || Common.TaskNo[crnno - 1] != 0)// || Common.Loaded[crnno - 1] != 0)
            {
                ReadCrnData();
                return;
            }
            int iotype = 0, i_srow = 0, i_sbay = 0, i_slev = 0, i_drow = 0, i_dbay = 0, i_dlev = 0;
            if (cmd == "" || cmd == null)
            {
                return;
            }
            try
            {
                int type = Int32.Parse(cmd.Substring(0, 2));
                int wrkno = Int32.Parse(cmd.Substring(2, 4));
                if (type != 11) { return; }
                iotype = 4;
                i_srow = Int32.Parse(cmd.Substring(6, 2));
                i_sbay = Int32.Parse(cmd.Substring(8, 3));
                i_slev = Int32.Parse(cmd.Substring(11, 2));
                i_drow = Int32.Parse(cmd.Substring(13, 2));
                i_dbay = Int32.Parse(cmd.Substring(15, 3));
                i_dlev = Int32.Parse(cmd.Substring(18, 2));
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_Wrkno[crnno - 1] = wrkno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_MOVING;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = type;
                Common.crn_i_fstn[crnno - 1] = Common.GetStnByLoc(cmd.Substring(6, 7));
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = "";
                Common.crn_s_Tlocno[crnno - 1] = cmd.Substring(13, 7);
                Common.CrnState[crnno - 1] = 3;
                WriteCrnData(iotype, wrkno, i_srow, i_sbay, i_slev, i_drow, i_dbay, i_dlev);
                Thread.Sleep(Common.ci_CRNtimeInterval);
                ReadCrnData();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/Proc_StnToStn--站到站命令出错:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// åº“位移转操作
        /// </summary>
        /// <param name="cmd"></param>
        private void Proc_LocationMove(string cmd)
        {
            if (Common.Mode[crnno - 1] != Common.ci_CRN_ONLINE || Common.CrnState[crnno - 1] != Common.ci_CRN_STS_IDLE
                || Common.AlarmCode[crnno - 1] != 0)// || Common.TaskNo[crnno - 1] != 0)// || Common.Loaded[crnno - 1] != 0)
            {
                ReadCrnData();
                return;
            }
            int iotype = 0, i_srow = 0, i_sbay = 0, i_slev = 0, i_drow = 0, i_dbay = 0, i_dlev = 0;
            if (cmd == "" || cmd == null)
            {
                return;
            }
            try
            {
                int type = Int32.Parse(cmd.Substring(0, 2));
                int wrkno = Int32.Parse(cmd.Substring(2, 4));
                if (type != 12) { return; }
                iotype = 3;
                i_srow = Int32.Parse(cmd.Substring(6, 2));
                i_sbay = Int32.Parse(cmd.Substring(8, 3));
                i_slev = Int32.Parse(cmd.Substring(11, 2));
                i_drow = Int32.Parse(cmd.Substring(13, 2));
                i_dbay = Int32.Parse(cmd.Substring(15, 3));
                i_dlev = Int32.Parse(cmd.Substring(18, 2));
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_Wrkno[crnno - 1] = wrkno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_LOCATION_MOVE;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = type;
                Common.crn_i_fstn[crnno - 1] = 0;
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = cmd.Substring(6, 7);
                Common.crn_s_Tlocno[crnno - 1] = cmd.Substring(13, 7);
                Common.CrnState[crnno - 1] = 3;
                WriteCrnData(iotype, wrkno, i_srow, i_sbay, i_slev, i_drow, i_dbay, i_dlev);
                Thread.Sleep(Common.ci_CRNtimeInterval);
                ReadCrnData();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/Proc_LocationMove--库位移转命令出错:" + em.Message);
                return;
            }
        }
        #region å †åž›æœºè¯»å†™æŒ‡ä»¤
        /// <summary>
        /// è¯»å–堆垛机状态数据
        /// </summary>
        private void ReadCrnData()
        {
            string s_startadd = "";
            int num = 0, i_len = 0;
            recvStr = "";
            try
            {
                s_startadd = "DB91.0";       //读取堆垛机状态起始地址
                i_len =60;                 //读取堆垛机状态地址长度
                OperateResult<byte[]> read = siemensTcpNet.Read(s_startadd, (ushort)i_len);
                if (read.IsSuccess)
                {
                    for (int i = 0; i < 14; i++)       //DB8.18到DB8.52
                    {
                        num = siemensTcpNet.ByteTransform.TransInt16(read.Content, i * 2);
                        //buf1 = read.Content;
                        //num = 256 * (int)buf1[i * 2] + (int)buf1[i * 2 + 1];
                        recvStr = recvStr + num.ToString();
                        AnalyseStatus(i, num);
                    }
                    DisplayInfo("【" + DateTime.Now.ToString() + "】" + recvStr);//同步显示
                }
                else
                {
                    DisplayInfo("【" + DateTime.Now.ToString() + "】扫描堆垛机状态失败:" + read.ToMessageShowString());
                }
                OperateResult<float[]> read1 = siemensTcpNet.ReadFloat("DB91.28", (ushort)7);
                if (read.IsSuccess)
                {
                    for (int i = 0; i < 7; i++)       //DB8.18到DB8.50
                    {
                        float num1 = read1.Content[i];
                        recvStr = recvStr + num1.ToString();
                        AnalyseStatus(i + 17, num1);
                    }
                }
            }
            catch (Exception em)
            {
                //DisplayInfo("读" + crnno.ToString() + "号吊车目标主机无应答,可能原因:吊车ip设定异常或丢失,请检查!");//同步显示
                DisplayInfo("【" + DateTime.Now.ToString() + "】扫描堆垛机状态失败: " + em.Message);//同步显示
                Common.WriteLogFile("WcsError", "CraneThread/ReadCrnData--读取堆垛机状态失败:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// å †åž›æœºå®Œæˆå…¥å‡ºåº“任务后,更新工作状态
        /// </summary>
        /// <param name="wrkno"></param>
        private void UpdateWrkStsByFinish(int wrk_no)
        {
            int wrk_sts = 0, iotype = 0, newwrk_sts = 0;
            try
            {
                DateTime dt1 = System.DateTime.Now;
                DataView dv = Common.ExecAsrsSelect("select top 1 wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + "");
                foreach (System.Data.DataRowView drow in dv)
                {
                    wrk_sts = Convert.ToInt32(drow[0].ToString());
                    iotype = Convert.ToInt32(drow[1].ToString());
                }
                if ((wrk_sts == 3 && (iotype == 1 || iotype == 10 || iotype == 53 || iotype == 54 || iotype == 57))
                    || (wrk_sts == 12 && iotype == 11))
                {
                    newwrk_sts = 4;
                }
                else if (wrk_sts == 12
                    && (iotype == 101 || iotype == 110) || iotype == 103 || iotype == 104 || iotype == 107)
                {
                    newwrk_sts = 14;
                }
                if (newwrk_sts > 0)
                {
                    bool result = Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts=" + newwrk_sts + " ,crn_end_time ='" + dt1 + "'  where wrk_no =" + wrk_no + "");
                }
            }
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】" + crnno + "(" + wrk_no + ")#更新工作状态失败: " + em.Message);
                Common.WriteLogFile("WcsError", "CraneThread/UpdateWrkStsByFinish--更新工作状态失败--工作号" + wrk_no + ":" + em.Message);
            }
        }
        /// <summary>
        /// æ ¹æ®ascii码值得到对应字符
        /// </summary>
        /// <param name="asciiCode">ascii码</param>
        /// <returns>返回对应字符</returns>
        public string GetStringByASCII(int asciiCode)
        {
            try
            {
                if (asciiCode >= 0 && asciiCode <= 127)
                {
                    System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
                    byte[] byteArray = new byte[] { (byte)asciiCode };
                    string strCharacter = asciiEncoding.GetString(byteArray);
                    return (strCharacter);
                }
                else if (asciiCode >= 128 && asciiCode <= 255)
                {
                    System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
                    byte[] byteArray = new byte[] { (byte)(asciiCode + 65536) };
                    string strCharacter = Encoding.Default.GetString(byteArray);
                    return (strCharacter);
                }
                else
                {
                    throw new Exception("无效的ASCII码!");
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/GetStringByASCII--ASCII转换字符串失败:" + em.Message);
                return "";
            }
        }
        #region åˆ†æžçŠ¶æ€
        /// <summary>
        /// åˆ†æžå †åž›æœºçŠ¶æ€
        /// </summary>
        /// <param name="i">地址序列</param>
        /// <param name="num">状态值</param>
        private void AnalyseStatus(int i, float lnum)
        {
            int num = (int)lnum;
            switch (i)
            {
                case 0:             //堆垛机模式
                    Common.Mode[crnno - 1] = num;
                    break;
                case 1:             //工作号/任务号
                    Common.TaskNo[crnno - 1] = num;
                    break;
                case 2:             //堆垛机状态
                    Common.CrnState[crnno - 1] = num;
                    if (Common.Mode[crnno - 1] == Common.ci_CRN_ONLINE && Common.CrnState[crnno - 1] == Common.ci_CRN_STS_TASK_FINISH)
                    {
                        Common.TaskFinish[crnno - 1] = 1;
                    }
                    else
                    {
                        Common.TaskFinish[crnno - 1] = 0;
                    }
                    break;
                    //测试用
                //Common.CrnState[crnno - 1] = num;
                //if (Common.Mode[crnno - 1] == Common.ci_CRN_ONLINE && Common.CrnState[crnno - 1] == Common.ci_CRN_STS_TASK_FINISH
                //    && Common.gi_Online_Flag == Common.ch_CMD_PAUSE && Common.TaskNo[crnno - 1] == 9999)
                //{//系统暂停模式,堆垛机状态显示等待WCS确认,任务号为9999,表示手工下发的堆垛机任务,置位确认位
                //    OperateResult result = siemensTcpNet.Write("DB90.0", (short)1);
                //    Common.TaskFinish[crnno - 1] = 1;
                //}
                //else
                //{
                //    Common.TaskFinish[crnno - 1] = 0;
                //}
                //break;
                case 3:             //当前列号
                    Common.crn_dqps[crnno - 1] = num;
                    break;
                case 4:             //当前层号
                    Common.crn_dqcs[crnno - 1] = num;
                    break;
                case 5:             //货叉位置
                    Common.ForkPos[crnno - 1] = num;
                    break;
                case 6:             //载货台位置
                    Common.LiftPos[crnno - 1] = num;
                    break;
                case 7:             //走行是否在定位
                    Common.WalkPos[crnno - 1] = num;
                    break;
                case 8:             //载货台是否有物
                    Common.Loaded[crnno - 1] = num;
                    break;
                case 9:             //堆垛机异常代码
                    Common.AlarmCode[crnno - 1] = num;
                    if (Common.AlarmCode[crnno - 1] == 40 || Common.AlarmCode[crnno - 1] == 41)
                    {
                        Common.crn_jt[crnno - 1] = true;
                    }
                    else
                    {
                        Common.crn_jt[crnno - 1] = false;
                    }
                    break;
                //case 11:             //堆垛机任务完成
                //    if (Common.Mode[crnno - 1] == Common.ci_CRN_ONLINE && Common.CrnState[crnno - 1] == Common.ci_CRN_STS_TASK_FINISH)
                //    {
                //        Common.TaskFinish[crnno - 1] = 1;
                //    }
                //    else
                //    {
                //        Common.TaskFinish[crnno - 1] = 0;
                //    }
                //    break;
                case 17:            //堆垛机行走速度
                    Common.WalkSpeed[crnno - 1] = System.Math.Abs(lnum);
                    break;
                case 18:            //堆垛机升降速度
                    Common.LiftSpeed[crnno - 1] = System.Math.Abs(lnum);
                    break;
                case 19:            //堆垛机叉牙速度
                    Common.ForkSpeed[crnno - 1] = System.Math.Abs(lnum);
                    break;
                case 20:            //走行总距离
                    Common.XDistance[crnno - 1] = System.Math.Abs(lnum);
                    break;
                case 21:            //升降总距离
                    Common.YDistance[crnno - 1] = System.Math.Abs(lnum);
                    break;
                case 22:            //走行总时长
                    Common.XDuration[crnno - 1] = System.Math.Abs(lnum);
                    break;
                case 23:            //升降总时长
                    Common.YDuration[crnno - 1] = System.Math.Abs(lnum);
                    break;
            }
            #region æ–½è€å¾·
            //if (i == 0)
            //{
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_sdms) == true)
            //    {
            //        Common.crn_sdms[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_sdms[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_zdms) == true)
            //    {
            //        Common.crn_zdms[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_zdms[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_dnms) == true)
            //    {
            //        Common.crn_dnms[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_dnms[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_sdz) == true)
            //    {
            //        Common.crn_sdz[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_sdz[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_zdz) == true)
            //    {
            //        Common.crn_zdz[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_zdz[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_dnmsz) == true)
            //    {
            //        Common.crn_dnmsz[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_dnmsz[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_jt) == true)
            //    {
            //        Common.crn_jt[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_jt[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_yc) == true)
            //    {
            //        Common.crn_yc[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_yc[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_dndmz) == true)
            //    {
            //        Common.crn_dndmz[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_dndmz[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_dnmljs) == true)
            //    {
            //        Common.crn_dnmljs[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_dnmljs[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_rkz) == true)
            //    {
            //        Common.crn_rkz[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_rkz[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_ckz) == true)
            //    {
            //        Common.crn_ckz[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_ckz[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_kdkz) == true)
            //    {
            //        Common.crn_kdkz[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_kdkz[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_zdzz) == true)
            //    {
            //        Common.crn_zdzz[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_zdzz[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_yxz) == true)
            //    {
            //        Common.crn_yxz[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_yxz[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_dcqhjd) == true)
            //    {
            //        Common.crn_dcqhjd[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_dcqhjd[crnno - 1] = false;
            //    }
            //}
            //else if (i == 1)
            //{
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_dcfhjd) == true)
            //    {
            //        Common.crn_dcfhjd[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_dcfhjd[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_dckx) == true)
            //    {
            //        Common.crn_dckx[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_dckx[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_zxyddw) == true)
            //    {
            //        Common.crn_zxyddw[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_zxyddw[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_sjyddw) == true)
            //    {
            //        Common.crn_sjyddw[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_sjyddw[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_zxzdw) == true)
            //    {
            //        Common.crn_zxzdw[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_zxzdw[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_cyzzj) == true)
            //    {
            //        Common.crn_cyzzj[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_cyzzj[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_cyzzd) == true)
            //    {
            //        Common.crn_cyzzd[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_cyzzd[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_cyzyd) == true)
            //    {
            //        Common.crn_cyzyd[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_cyzyd[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_sjsdw) == true)
            //    {
            //        Common.crn_sjsdw[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_sjsdw[crnno - 1] = false;
            //    }
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_sjxdw) == true)
            //    {
            //        Common.crn_sjxdw[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_sjxdw[crnno - 1] = false;
            //    }
            //    //if (Common.fun_ChkAndByte(num, Common.ch_crn_plcdlbz) == true)
            //    //{
            //    //    Common.crn_zxzdw[crnno - 1] = true;
            //    //}
            //    //else
            //    //{
            //    //    Common.crn_zxzdw[crnno - 1] = false;
            //    //}
            //    if (Common.fun_ChkAndByte(num, Common.ch_crn_sjtycyw) == true)
            //    {
            //        Common.crn_sjtycyw[crnno - 1] = true;
            //    }
            //    else
            //    {
            //        Common.crn_sjtycyw[crnno - 1] = false;
            //    }
            //}
            //else if (i == 5)               //当前排数
            //{
            //    try
            //    {
            //        Common.crn_dqps[crnno - 1] = num;
            //    }
            //    catch (Exception t)
            //    {
            //        Common.crn_dqps[crnno - 1] = 0;
            //    }
            //}
            //else if (i == 6)              //当前层数
            //{
            //    try
            //    {
            //        Common.crn_dqcs[crnno - 1] = num;
            //    }
            //    catch (Exception t)
            //    {
            //        Common.crn_dqcs[crnno - 1] = 0;
            //    }
            //}
            //else if (i == 7)              //设备异常码
            //{
            //    try
            //    {
            //        Common.crn_ycmm[crnno - 1] = num;
            //    }
            //    catch (Exception t)
            //    {
            //        Common.crn_ycmm[crnno - 1] = 0;
            //    }
            //}
            ////else if (i == 8)            //走型镭射值2
            ////{
            ////    //distance1 = distance1.ToString//num;
            ////    Common.crn_zxlsz2[crnno - 1] = num;
            ////    try
            ////    {
            ////        Common.crn_zxlsz[crnno - 1] = double.Parse(Common.crn_zxlsz1[crnno - 1].ToString() + "." + Common.crn_zxlsz2[crnno - 1].ToString()) * 0.001;
            ////    }
            ////    catch (Exception r)
            ////    {
            ////        Common.crn_zxlsz[crnno - 1] = 0;
            ////    }
            ////}
            ////else if (i == 9)            //升降镭射值
            ////{
            ////    try
            ////    {
            ////        Common.crn_sjlsz1[crnno - 1] = num;
            ////    }
            ////    catch (Exception t)
            ////    {
            ////        Common.crn_sjlsz1[crnno - 1] = 0;
            ////    }
            ////}
            ////else if (i == 10)//距离
            ////{
            ////    Common.crn_sjlsz2[crnno - 1] = num;
            ////    try
            ////    {
            ////        Common.crn_sjlsz[crnno - 1] = double.Parse(Common.crn_sjlsz1[crnno - 1].ToString() + "." + Common.crn_sjlsz2[crnno - 1].ToString()) * 0.001;
            ////    }
            ////    catch (Exception r)
            ////    {
            ////        Common.crn_sjlsz[crnno - 1] = 0;
            ////    }
            ////}
            ////else if (i == 23)//运行异常母码
            ////{
            ////    Common.crn_ycmm[crnno-1] = num;
            ////}
            ////else if (i == 24)//运行异常子码
            ////{
            ////    Common.crn_yczm[crnno - 1] = num;
            ////}
            //Common.crn_dndmz[crnno - 1] = Common.crn_dckx[crnno - 1];
            //if (Common.crn_ycmm[crnno - 1] > 0)
            //{
            //    Common.crn_i_Errcod[crnno - 1] = Common.ci_CRN_STS_ERROR;
            //    // Class1.crn_i_crn_sts[crnno - 1] = Class1.ci_CRN_STS_ERROR;
            //    //if (Common.crn_ycmm[crnno - 1] > 0)
            //    //{
            //    Common.crnerrlist[crnno - 1] = crnno.ToString() + "号吊车发生异常,异常号:" + Common.GetErr(Common.crn_ycmm[crnno - 1]);
            //    //}
            //    //else if (Common.crn_ycmm[crnno - 1] == 0)
            //    //{
            //    //    Common.crnerrlist[crnno - 1] = "";
            //    //}
            //    //else
            //    //{
            //    //    Common.crnerrlist[crnno - 1] = crnno.ToString() + "号吊车指令异常!";
            //    //}
            //}
            //else
            //{
            //    Common.crn_i_Errcod[crnno - 1] = Common.ci_CRN_SETTING;
            //    //Class1.crn_i_crn_sts[crnno - 1] = Class1.gi_crn_actsts[crnno - 1];
            //    Common.crnerrlist[crnno - 1] = "";
            //    //Common.CrnErrFlag[crnno - 1] = true;
            //}
            #endregion
            //判断原点标志
            if (Common.crn_dqps[crnno - 1] == 1 && Common.crn_dqcs[crnno - 1] == 1
                && Common.ForkPos[crnno - 1] == 0 && Common.LiftPos[crnno - 1] == 1 && Common.WalkPos[crnno - 1] == 1)
            {
                Common.crn_i_onHP[crnno - 1] = 1;
            }
            else
            {
                Common.crn_i_onHP[crnno - 1] = 0;
            }
            //电脑模式、空闲、任务号为0,清空堆垛机状态数组
            if (Common.Mode[crnno - 1] == Common.ci_CRN_ONLINE && Common.CrnState[crnno - 1] == Common.ci_CRN_STS_IDLE
                && Common.TaskNo[crnno - 1] == 0)
            {
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE;
                Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = 0;
                Common.crn_i_fstn[crnno - 1] = 0;
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = "";
                Common.crn_s_Tlocno[crnno - 1] = "";
                Common.crn_s_commandstr[crnno - 1] = "";
            }
            //处理堆垛机搬运完成后,更新工作档数据
            if (Common.TaskFinish[crnno - 1] == 1 && Common.TaskNo[crnno - 1] > 0
                && Common.TaskFlag[crnno - 1] == 1)
            {
                //WCS收到堆垛机任务完成TaskFinish信号后,处理业务逻辑并置位DB8.0确认位
                OperateResult result = siemensTcpNet.Write("DB90.0", (short)1);
                //更新工作状态3为4,12为14
                //2019-04-30修改,考虑到出库状态12->14时,需要下发命令给PLC,
                //将TaskFinish标记丢给timer1时间中Proc_StoreFinished处理入库,
                //
                //UpdateWrkStsByFinish((int)Common.F1TaskNo[crnno - 1]);
                Common.crn_i_crnno[crnno - 1] = crnno;
                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE;
                //Common.crn_i_Errcod[crnno - 1] = 0;
                Common.crn_i_kind[crnno - 1] = 0;
                Common.crn_i_fstn[crnno - 1] = 0;
                Common.crn_i_tstn[crnno - 1] = 0;
                Common.crn_s_Flocno[crnno - 1] = "";
                Common.crn_s_Tlocno[crnno - 1] = "";
                Common.crn_s_commandstr[crnno - 1] = "";
                Common.TaskFlag[crnno - 1] = 0;
            }
            DisplayParamInfo();
            #region æ–½è€å¾·
            ////判断吊车入出状态
            //if (Common.crn_dnms[crnno - 1] == true && Common.crn_dnmsz[crnno - 1] == true &&
            //    Common.crn_dckx[crnno - 1] == false && Common.crn_dnmljs[crnno - 1] == true &&
            //    (Common.crn_rkz[crnno - 1] == true || Common.crn_ckz[crnno - 1] == true || Common.crn_kdkz[crnno - 1] == true
            //    || Common.crn_zdzz[crnno - 1] == true || Common.crn_yxz[crnno - 1] == true
            //    || Common.crn_yxz[crnno - 1] == true || Common.crn_dcqhjd[crnno - 1] == true))
            //{
            //    //Class1.crn_i_onHP[crnno - 1] = 0;
            //    //Class1.crn_i_Errcod[crnno - 1] = 0;
            //    switch (Common.gi_crn_iotype[crnno - 1])
            //    {
            //        case 4://回原点
            //            Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_MOVING;
            //            break;
            //        case 5://坐标移行
            //            Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_MOVING;
            //            break;
            //        case 7://入库
            //            Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_STORE_MOVE;
            //            break;
            //        case 8://出库
            //            Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_RETRIEVE_MOVE;
            //            break;
            //        case 9://移动至站点
            //            Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_MOVING;
            //            break;
            //        case 10://去反原点
            //            Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_OHP;
            //            break;
            //        case 11://站到站
            //            Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_STNCHG_MOVE;
            //            break;
            //        case 12://库位移转
            //            Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_LOCATION_MOVE;
            //            break;
            //    }
            //}
            ////根据吊车的完成,更新吊车对应状态,moving---->move over
            //if (Common.gi_cycle_flag == 0)
            //{
            //    Common.gi_cycle_flag = 1;
            //}
            //else
            //{
            //    if (Common.crn_dnms[crnno - 1] == true && Common.crn_dnmsz[crnno - 1] == true && Common.crn_dckx[crnno - 1] == true
            //        //&& Common.crn_dnmljs[crnno - 1] == true && Common.crn_yxz[crnno - 1] == false)
            //        && Common.crn_dndmz[crnno - 1] == true && Common.crn_yxz[crnno - 1] == false)
            //    //(Class1.crn_sbzc[crnno-1]==true && Class1.crn_dndm[crnno-1]==true && Class1.crn_dnmljs[crnno-1]==true && Class1.crn_dnz[crnno-1]==true)
            //    {
            //        switch (Common.gi_crn_iotype[crnno - 1])
            //        {
            //            case 7://入库
            //                if (Common.crn_i_crn_sts[crnno - 1] == 2)
            //                {
            //                    Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_STORE_OK;
            //                    Common.crn_s_commandstr[crnno - 1] = "";
            //                }
            //                break;
            //            case 8://出库
            //                if (Common.crn_i_crn_sts[crnno - 1] == 3)
            //                {
            //                    Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_RETRIEVE_OK;
            //                    Common.crn_s_commandstr[crnno - 1] = "";
            //                }
            //                break;
            //            case 4://回原点
            //                //if (Common.crn_i_crn_sts[crnno - 1] == 4)
            //                //{
            //                    Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE;
            //                    Common.crn_s_commandstr[crnno - 1] = "";
            //                    Common.crn_i_Wrkno[crnno - 1] = 0;
            //                //}
            //                break;
            //            case 5://坐标移行
            //                if (Common.crn_i_crn_sts[crnno - 1] == 4)
            //                {
            //                    Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE;
            //                    Common.crn_s_commandstr[crnno - 1] = "";
            //                }
            //                break;
            //            case 9://移动至站点
            //                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE;
            //                Common.crn_s_commandstr[crnno - 1] = "";
            //                break;
            //            case 10://去反原点
            //                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE;
            //                Common.crn_s_commandstr[crnno - 1] = "";
            //                Common.crn_i_Wrkno[crnno - 1] = 0;
            //                break;
            //            case 11://站到站
            //                if (Common.crn_i_crn_sts[crnno - 1] == Common.ci_CRN_STS_STNCHG_MOVE)
            //                {
            //                    Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_STNCHG_OK;
            //                    Common.crn_s_commandstr[crnno - 1] = "";
            //                }
            //                break;
            //            case 12://库到库
            //                if (Common.crn_i_crn_sts[crnno - 1] == Common.ci_CRN_STS_LOCATION_MOVE)
            //                {
            //                    Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_LOCATION_MOVE_OK;
            //                    Common.crn_s_commandstr[crnno - 1] = "";
            //                }
            //                break;
            //            default:
            //                Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE;
            //                Common.crn_i_Wrkno[crnno - 1] = 0;
            //                Common.crn_i_crnno[crnno - 1] = crnno;
            //                Common.crn_i_fstn[crnno - 1] = 0;
            //                Common.crn_i_tstn[crnno - 1] = 0;
            //                Common.crn_s_Flocno[crnno - 1] = "";
            //                Common.crn_s_Tlocno[crnno - 1] = "";
            //                Common.crn_i_kind[crnno - 1] = 0;
            //                Common.crn_s_commandstr[crnno - 1] = "";
            //                break;
            //        }
            //    }
            //    Common.gi_cycle_flag = 0;
            //}
            //int sstn = Common.crn_i_fstn[crnno - 1];
            //int dstn = Common.crn_i_tstn[crnno - 1];
            //int i_sstnno = Common.GetStnSeqNo(crnno, sstn);
            //int i_dstnno = Common.GetStnSeqNo(crnno, dstn);
            #endregion
        }
        #endregion
        /// <summary>
        /// å‘送命令到堆垛机
        /// </summary>
        /// /// <param name="wrkno">工作号</param>
        /// <param name="type">类型</param>
        /// <param name="srow">源排</param>
        /// <param name="sbay">源列</param>
        /// <param name="slev">源层</param>
        /// <param name="drow">目标排</param>
        /// <param name="dbay">目标列</param>
        /// <param name="dlev">目标层</param>
        private void WriteCrnData(int type, int wrkno, int srow, int sbay, int slev, int drow, int dbay, int dlev)
        {
            try
            {
                string s_startadd = "";
                short[] iArr_value = new short[8];
                bool ok = false;
                int icount = 0;
                s_startadd = "DB90.2";
                iArr_value[0] = (short)wrkno;
                iArr_value[1] = (short)type;
                iArr_value[2] = (short)srow;
                iArr_value[3] = (short)sbay;
                iArr_value[4] = (short)slev;
                iArr_value[5] = (short)drow;
                iArr_value[6] = (short)dbay;
                iArr_value[7] = (short)dlev;
                while (ok == false)
                {
                    try
                    {
                        OperateResult result = siemensTcpNet.Write(s_startadd, iArr_value);
                        result = siemensTcpNet.Write("DB90.18", (ushort)1);
                        if (result.IsSuccess)
                        {
                            ok = true;
                            UpdateWrkStsByCmd(wrkno);
                            Common.gs_crncmd[crnno - 1] = "";//必须赋空
                        }
                        else
                        {
                            icount++;
                            if (icount > 3)
                            {
                                ok = true;
                                Common.gs_crncmd[crnno - 1] = "";//必须赋空
                            }
                            else
                            {
                                ok = false;
                            }
                        }
                        Thread.Sleep(Common.ci_CRNtimeInterval);
                    }
                    catch (Exception em)
                    {
                        Common.gs_crncmd[crnno - 1] = "";//必须赋空
                        // DisplayInfo("写" + crnno.ToString() + "号吊车目标主机无应答,可能原因:吊车ip设定异常或丢失,请检查!");//同步显示
                        return;
                    }
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "CraneThread/WriteCrnData--写命令到堆垛机出错:" + em.Message);
            }
        }
        /// <summary>
        /// ç»™å †åž›æœºä¸‹å‘任务后,更新工作状态
        /// </summary>
        /// <param name="wrkno"></param>
        private void UpdateWrkStsByCmd(int wrk_no)
        {
            int wrk_sts = 0, iotype = 0, newwrk_sts = 0;
            try
            {
                DateTime dt1 = System.DateTime.Now;
                DataView dv = Common.ExecAsrsSelect("select top 1 wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + "");
                foreach (System.Data.DataRowView drow in dv)
                {
                    wrk_sts = Convert.ToInt32(drow[0].ToString());
                    iotype = Convert.ToInt32(drow[1].ToString());
                }
                if ((wrk_sts == 2 && (iotype == 1 || iotype == 10 || iotype == 53 || iotype == 54 || iotype == 57))
                    || (wrk_sts == 11 && iotype == 11))
                {
                    newwrk_sts = 3;
                }
                else if (wrk_sts == 11
                    && (iotype == 101 || iotype == 110) || iotype == 103 || iotype == 104 || iotype == 107)
                {
                    newwrk_sts = 12;
                }
                if (newwrk_sts > 0)
                {
                    bool result = Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts=" + newwrk_sts + " ,crn_str_time ='" + dt1 + "'  where wrk_no =" + wrk_no + "");
                }
            }
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】" + crnno + "(" + wrk_no + ")#更新工作状态失败: " + em.Message);
                Common.WriteLogFile("WcsError", "CraneThread/UpdateWrkStsByFinish--更新工作状态失败--工作号" + wrk_no + ":" + em.Message);
            }
        }
        #endregion
        #region ç”»é¢åŒæ­¥æ˜¾ç¤º
        /// <summary>
        /// åŒæ­¥æ˜¾ç¤ºä¸»ç”»é¢å †åž›æœºä¿¡æ¯
        /// </summary>
        /// <param name="crn">堆垛机号</param>
        /// <param name="bay">列</param>
        /// <param name="lev">层</param>
        /// <param name="dist">距离</param>
        /// <param name="height">高度</param>
        /// <param name="err">异常</param>
        private void DisplayCrnstsData(int crn, int bay, int lev, double dist, double height, int err)
        {
            if (tb.InvokeRequired)
            {
                try
                {
                    DisplaycrnstsData d = new DisplaycrnstsData(DisplayCrnstsData);
                    tb.Invoke(d, new object[] { crn, bay, lev, dist, height, err });
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "CraneThread/DisplayCrnstsData--同步显示主画面堆垛机信息失败:" + em.Message);
                }
            }
            else
            {
                crnstslist.Items.Clear();
                ListViewItem lvi = new ListViewItem();
                lvi.SubItems[0].Text = crn.ToString();
                lvi.SubItems.Add(bay.ToString());
                lvi.SubItems.Add(lev.ToString());
                lvi.SubItems.Add(dist.ToString());
                lvi.SubItems.Add(height.ToString());
                lvi.SubItems.Add(err.ToString());
                this.crnstslist.Items.Add(lvi);
            }
        }
        /// <summary>
        /// å †åž›æœºé€šè®¯åé¦ˆä¿¡æ¯
        /// </summary>
        /// <param name="text"></param>
        private void DisplayInfo(string text)
        {
            if (tb.InvokeRequired)
            {
                try
                {
                    SetTextCallback d = new SetTextCallback(DisplayInfo);
                    tb.Invoke(d, new object[] { text });
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "CraneThread/DisplayInfo--同步显示堆垛机通讯信息失败:" + em.Message);
                }
            }
            else
            {
                if (tb.Items.Count > 30)
                {
                    tb.Items.Clear();
                }
                tb.Items.Add(text);
                tb.TopIndex = tb.Items.Count - (int)(tb.Height / tb.ItemHeight);
            }
        }
        /// <summary>
        /// å †åž›æœºç”»é¢çŠ¶æ€æ˜¾ç¤ºä¿¡æ¯
        /// </summary>
        private void DisplayParamInfo()
        {
            if (form1.InvokeRequired)
            {
                try
                {
                    SetTextCallback1 d = new SetTextCallback1(DisplayParamInfo);
                    form1.Invoke(d, new object[] { });
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "CraneThread/DisplayParamInfo--同步显示堆垛机画面状态信息失败:" + em.Message);
                }
            }
            else
            {
                tb_sendtocrn.Text = Common.crn_s_commandstr[crnno - 1];
                switch (Common.Mode[crnno - 1])
                {
                    case 1:
                        dgv_crnsts["col_Mode", crnno - 1].Value = "手动";
                        break;
                    case 2:
                        dgv_crnsts["col_Mode", crnno - 1].Value = "自动";
                        break;
                    case 3:
                        dgv_crnsts["col_Mode", crnno - 1].Value = "连线";
                        break;
                    case 4:
                        dgv_crnsts["col_Mode", crnno - 1].Value = "手动中";
                        break;
                    case 5:
                        dgv_crnsts["col_Mode", crnno - 1].Value = "自动中";
                        break;
                    case 6:
                        dgv_crnsts["col_Mode", crnno - 1].Value = "连线中";
                        break;
                }
                dgv_crnsts["col_Mode", crnno - 1].Style.ForeColor = Common.Mode[crnno - 1] == 6 ? Color.Red : Color.Black;
                dgv_crnsts["col_ErrorCode", crnno - 1].Value = Common.AlarmCode[crnno - 1];
                dgv_crnsts["col_ErrorCode", crnno - 1].Style.ForeColor = Common.AlarmCode[crnno - 1] > 0 ? Color.Red : Color.Black;
                if (Common.Loaded[crnno - 1] == 1)
                {
                    dgv_crnsts["col_Loaded", crnno - 1].Value = "有物";
                }
                else
                {
                    dgv_crnsts["col_Loaded", crnno - 1].Value = "无物";
                }
                dgv_crnsts["col_Loaded", crnno - 1].Style.ForeColor = Common.Loaded[crnno - 1] == 1 ? Color.Red : Color.Black;
                dgv_crnsts["col_Bay", crnno - 1].Value = Common.crn_dqps[crnno - 1];
                dgv_crnsts["col_Lev", crnno - 1].Value = Common.crn_dqcs[crnno - 1];
                dgv_crnsts["col_Status", crnno - 1].Value = Common.GetCrnStsName(Common.CrnState[crnno - 1]);
                dgv_crnsts["col_Status", crnno - 1].Style.ForeColor = Common.CrnState[crnno - 1] == 99 ? Color.Red : Color.Black;
                if (Common.crn_dqps[crnno - 1] == 1)
                {
                    dgv_crnsts["col_Zxyd", crnno - 1].Value = "是";
                }
                else
                {
                    dgv_crnsts["col_Zxyd", crnno - 1].Value = "否";
                }
                if (Common.crn_dqcs[crnno - 1] == 1)
                {
                    dgv_crnsts["col_Sjyd", crnno - 1].Value = "是";
                }
                else
                {
                    dgv_crnsts["col_Sjyd", crnno - 1].Value = "否";
                }
                if (Common.ForkPos[crnno - 1] == 0)
                {
                    dgv_crnsts["col_Chaya", crnno - 1].Value = "中间";
                }
                else if (Common.ForkPos[crnno - 1] == 1)
                {
                    dgv_crnsts["col_Chaya", crnno - 1].Value = "左端";
                }
                else if (Common.ForkPos[crnno - 1] == 2)
                {
                    dgv_crnsts["col_Chaya", crnno - 1].Value = "右端";
                }
                else
                {
                    dgv_crnsts["col_Chaya", crnno - 1].Value = "";
                }
                if (Common.WalkPos[crnno - 1] == 1)
                {
                    dgv_crnsts["col_Zxdw", crnno - 1].Value = "是";
                }
                else
                {
                    dgv_crnsts["col_Zxdw", crnno - 1].Value = "否";
                }
                if (Common.LiftPos[crnno - 1] == 1)
                {
                    dgv_crnsts["col_Sjdw", crnno - 1].Value = "下定位";
                }
                else if (Common.LiftPos[crnno - 1] == 2)
                {
                    dgv_crnsts["col_Sjdw", crnno - 1].Value = "上定位";
                }
                else
                {
                    dgv_crnsts["col_Sjdw", crnno - 1].Value = "否";
                }
                if (Common.crn_jt[crnno - 1])
                {
                    dgv_crnsts["col_Jiting", crnno - 1].Value = "是";
                    dgv_crnsts["col_Jiting", crnno - 1].Style.ForeColor = Color.Red;
                }
                else
                {
                    dgv_crnsts["col_Jiting", crnno - 1].Value = "";
                }
                dgv_crnsts["col_Xspeed", crnno - 1].Value = Common.WalkSpeed[crnno - 1].ToString("#0.00");
                dgv_crnsts["col_Yspeed", crnno - 1].Value = Common.LiftSpeed[crnno - 1].ToString("#0.00");
                dgv_crnsts["col_Zspeed", crnno - 1].Value = Common.ForkSpeed[crnno - 1].ToString("#0.00");
                dgv_crnsts["col_Xdistance", crnno - 1].Value = Common.XDistance[crnno - 1].ToString("#0.00");
                dgv_crnsts["col_Ydistance", crnno - 1].Value = Common.YDistance[crnno - 1].ToString("#0.00");
                dgv_crnsts["col_Xduration", crnno - 1].Value = Common.XDuration[crnno - 1].ToString("#0.00");
                dgv_crnsts["col_Yduration", crnno - 1].Value = Common.YDuration[crnno - 1].ToString("#0.00");
            }
        }
        #endregion
        ///// <summary>
        ///// é€šè®¯å¤±è´¥åŽåˆå§‹åŒ–堆垛机状态
        ///// </summary>
        //private void InitCrn()
        //{
        //    try
        //    {
        //        //Common.crn_i_crnno[crnno - 1] = i;
        //        //crn_i_crn_sts[i - 1] = ci_CRN_SETTING;
        //        //Common.gs_crncmd[crnno - 1] = "";
        //        //Common.crn_i_kind[crnno - 1] = 0;
        //        //Common.crn_i_Wrkno[crnno - 1] = 0;
        //        //Common.crn_i_fstn[crnno - 1] = 0;
        //        //Common.crn_i_tstn[crnno - 1] = 0;
        //        //Common.crn_s_Flocno[crnno - 1] = "";
        //        //Common.crn_s_Tlocno[crnno - 1] = "";
        //        //crn_i_Errcod[i - 1] = 0;
        //        //Common.crn_i_onHP[crnno - 1] = 0;
        //        //Common.gs_crnlastio[crnno - 1] = "I";
        //        //Common.gs_crncmd[crnno - 1] = "";
        //        //Common.crn_s_commandstr[crnno - 1] = "";
        //        //Common.gi_crn_iotype[crnno - 1] = 0;
        //        //Common.gb_crn_status[crnno - 1] = true;
        //        //Common.AlarmCode[crnno - 1] = 0;
        //        //Common.F1TaskFlag[crnno - 1] = 0;
        //        Common.F1State[crnno - 1] = -1;
        //    }
        //    catch (Exception)
        //    { }
        //}
        /// <summary>
        /// å †åž›æœºä¸»çº¿ç¨‹
        /// </summary>
        private void ThreadTask()
        {
            i_crn_step = 6;
            connect = siemensTcpNet.ConnectServer();
            while (true)
            {
                try
                {
                    if (!connect.IsSuccess)
                    {
                        if (!ReConnect())
                        {
                            Thread.Sleep(Common.ci_CRNtimeInterval);
                            continue;
                        }
                    }
                    ///gs_crncmd长度28:  12      0001   0100101   0200202
                    ///对应含义:      å…¥å‡ºç±»åž‹  å·¥ä½œå·   æºåº“位   ç›®æ ‡åº“位
                    if (Common.gs_crncmd[crnno - 1].Length == 20)
                    //|| Common.gs_crncmd[crnno - 1].Length == 21
                    //|| Common.gs_crncmd[crnno - 1].Length == 24)
                    {
                        ChkCrnCmd(Common.gs_crncmd[crnno - 1]);
                        Common.crn_s_commandstr[crnno - 1] = Common.gs_crncmd[crnno - 1];
                    }
                    switch (i_crn_step)
                    {
                        case 3:
                            Proc_ClearCmd(Common.crn_s_commandstr[crnno - 1]);//清命令操作
                            break;
                        case 4:
                            Proc_RebackHp(Common.crn_s_commandstr[crnno - 1]);//召回,回原点操作
                            break;
                        case 5:
                            Proc_CoordMove(Common.crn_s_commandstr[crnno - 1]);//坐标移行操作
                            break;
                        case 6:
                            ReadCrnData();//执行查询指令操作
                            break;
                        case 7:
                            Proc_Store(Common.crn_s_commandstr[crnno - 1]);//入库操作
                            break;
                        case 8:
                            Proc_Retrieve(Common.crn_s_commandstr[crnno - 1]);//出库操作
                            break;
                        case 9:
                            Proc_MoveToStn(Common.crn_s_commandstr[crnno - 1]);//行至站操作
                            break;
                        case 10:
                            Proc_RebackOHP(Common.crn_s_commandstr[crnno - 1]);//去反原点操作
                            break;
                        case 11:
                            Proc_StnToStn(Common.crn_s_commandstr[crnno - 1]);//站到站操作
                            break;
                        case 12:
                            Proc_LocationMove(Common.crn_s_commandstr[crnno - 1]);//库位移载操作
                            break;
                        //case 99:        //任务完成复位信号
                        //    string cmd = Common.crn_s_commandstr[crnno - 1];
                        //    int value = Int32.Parse(cmd.Substring(2, 4));
                        //    OperateResult result = siemensTcpNet.Write("DB8.0", value);
                        //    break;
                        default:
                            break;
                    }
                    i_crn_step = 6;
                    //Thread.Sleep(Common.ci_CRNtimeInterval);
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "CraneThread/ThreadTask--堆垛机主线程循环出错:" + em.Message);
                }
            }
        }
    }
}
version/STWCSMapEditor/WCS/DLL.cs
New file
@@ -0,0 +1,82 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Configuration;
namespace WCS
{
    class DLL
    {
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "SetTransMode2014", CharSet = CharSet.Unicode)]
        public static extern int SetTransMode(int handle, int TransMode, int ConType);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "StartSend2014", CharSet = CharSet.Unicode)]
        public static extern int StartSend();
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "EndSend2014", CharSet = CharSet.Unicode)]
        public static extern int EndSend(int handle);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "SetNetworkPara2014", CharSet = CharSet.Unicode)]
        public static extern int SetNetworkPara(int handle, int pno, string ip);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "SetSerialPortPara2014", CharSet = CharSet.Unicode)]
        public static extern int SetSerialPortPara(int handle, int pno, int port, int rate);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddControl2014", CharSet = CharSet.Unicode)]
        public static extern int AddControl(int handle, int pno, int DBColor);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddProgram2014", CharSet = CharSet.Unicode)]
        public static extern int AddProgram(int handle, int jno, int playTime);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "SetProgramTimer2014", CharSet = CharSet.Unicode)]
        public static extern int SetProgramTimer(int handle, int jno, int TimingModel, int WeekSelect, int startSecond, int startMinute,
                                                 int startHour, int startDay, int startMonth, int startWeek, int startYear,
                                                 int endSecond, int endMinute, int endHour, int endDay, int endMonth, int endWeek, int endYear);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddQuitText2014", CharSet = CharSet.Unicode)]
        public static extern int AddQuitText(int handle, int jno, int qno, int left, int top, int width, int height, int FontColor, string fontName, int fontSize, int fontBold, int Italic, int Underline, string text);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddFileArea2014", CharSet = CharSet.Unicode)]
        public static extern int AddFileArea(int handle, int jno, int qno, int left, int top, int width, int height);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddFile2014", CharSet = CharSet.Unicode)]
        public static extern int AddFile(int handle, int jno, int qno, int mno, string fileName, int width, int height, int playstyle, int QuitStyle, int playspeed, int delay, int MidText);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddTimerArea2014", CharSet = CharSet.Unicode)]
        public static extern int AddTimerArea(int handle, int jno, int qno, int left, int top, int width, int height,
                                              int fontColor, string fontName, int fontSize, int fontBold, int Italic, int Underline,
                                              int mode, int DayShow, int CulWeek, int CulDay, int CulHour, int CulMin, int CulSec,
                                              int year, int week, int month, int day, int hour, int minute, int second);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddDClockArea2014", CharSet = CharSet.Unicode)]
        public static extern int AddDClockArea(int handle, int jno, int qno, int left, int top, int width, int height,
                                               int fontColor, string fontName, int fontSize, int fontBold, int Italic, int Underline,
                                               int year, int week, int month, int day, int hour, int minute, int second, int TwoOrFourYear,
                                               int HourShow, int format, int spanMode, int Advacehour, int Advaceminute);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddLnTxtArea2014", CharSet = CharSet.Unicode)]
        public static extern int AddLnTxtArea(int handle, int jno, int qno, int left, int top, int width, int height, string LnFileName, int PlayStyle, int Playspeed, int times);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddFileString2014", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode)]
        public static extern int AddFileString(int pno, int jno, int qno, int mno, string str, string strFont, int fontsize, int fontcolor, bool bold, bool italic, bool underline, int Duiqi, int width, int height, int playstyle, int QuitStyle, int playspeed, int delay, int MidText);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "SendControl2014", CharSet = CharSet.Unicode)]
        public static extern int SendControl(int handle, int SendType, IntPtr hwnd);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "SendScreenPara2014", CharSet = CharSet.Unicode)]
        public static extern int SendScreenPara(int handle, int dbcolor, int widht, int height);
        [DllImport("ListenPlayDll2014.dll", EntryPoint = "AddLnTxtString2014", CharSet = CharSet.Unicode)]
        public static extern int AddLnTxtString(int handle, int jno, int qno, int left, int top, int width, int height, string str, string strFont, int fontsize, int fontcolor, bool bold, bool italic, bool underline, int PlayStyle, int Playspeed, int times);
    }
}
version/STWCSMapEditor/WCS/Form1.Designer.cs
New file
Diff too large
version/STWCSMapEditor/WCS/Form1.cs
New file
Diff too large
version/STWCSMapEditor/WCS/Form1.resx
New file
Diff too large
version/STWCSMapEditor/WCS/Form2.Designer.cs
New file
@@ -0,0 +1,1020 @@
namespace WCS
{
    partial class Form2
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2));
            this.button20 = new System.Windows.Forms.Button();
            this.tb_rackCount = new System.Windows.Forms.TextBox();
            this.tb_crnCount = new System.Windows.Forms.TextBox();
            this.tb_stnCount = new System.Windows.Forms.TextBox();
            this.tb_mapName = new System.Windows.Forms.TextBox();
            this.label1 = new System.Windows.Forms.Label();
            this.label2 = new System.Windows.Forms.Label();
            this.label5 = new System.Windows.Forms.Label();
            this.label6 = new System.Windows.Forms.Label();
            this.groupBox1 = new System.Windows.Forms.GroupBox();
            this.radioButton2 = new System.Windows.Forms.RadioButton();
            this.radioButton1 = new System.Windows.Forms.RadioButton();
            this.label7 = new System.Windows.Forms.Label();
            this.tb_minBay = new System.Windows.Forms.TextBox();
            this.label3 = new System.Windows.Forms.Label();
            this.tb_floors = new System.Windows.Forms.TextBox();
            this.label4 = new System.Windows.Forms.Label();
            this.lb_desc16 = new System.Windows.Forms.Label();
            this.rack4 = new System.Windows.Forms.Panel();
            this.rack1 = new System.Windows.Forms.Panel();
            this.rack2 = new System.Windows.Forms.Panel();
            this.lb_crn4 = new DevComponents.DotNetBar.LabelX();
            this.lb_track1 = new System.Windows.Forms.Label();
            this.rack3 = new System.Windows.Forms.Panel();
            this.rack8 = new System.Windows.Forms.Panel();
            this.rack5 = new System.Windows.Forms.Panel();
            this.rack6 = new System.Windows.Forms.Panel();
            this.lb_crn3 = new DevComponents.DotNetBar.LabelX();
            this.lb_track2 = new System.Windows.Forms.Label();
            this.rack7 = new System.Windows.Forms.Panel();
            this.rack12 = new System.Windows.Forms.Panel();
            this.rack9 = new System.Windows.Forms.Panel();
            this.rack10 = new System.Windows.Forms.Panel();
            this.lb_crn2 = new DevComponents.DotNetBar.LabelX();
            this.lb_track5 = new System.Windows.Forms.Label();
            this.rack11 = new System.Windows.Forms.Panel();
            this.rack16 = new System.Windows.Forms.Panel();
            this.rack13 = new System.Windows.Forms.Panel();
            this.rack15 = new System.Windows.Forms.Panel();
            this.lb_desc1 = new System.Windows.Forms.Label();
            this.lb_track4 = new System.Windows.Forms.Label();
            this.rack14 = new System.Windows.Forms.Panel();
            this.lb_crn1 = new DevComponents.DotNetBar.LabelX();
            this.tabControl_floor1 = new System.Windows.Forms.TabControl();
            this.page_floor1 = new System.Windows.Forms.TabPage();
            this.lb_trCart21 = new System.Windows.Forms.Label();
            this.lb_trCart22 = new System.Windows.Forms.Label();
            this.stn016 = new DevComponents.DotNetBar.LabelX();
            this.stn015 = new DevComponents.DotNetBar.LabelX();
            this.stn014 = new DevComponents.DotNetBar.LabelX();
            this.stn013 = new DevComponents.DotNetBar.LabelX();
            this.stn012 = new DevComponents.DotNetBar.LabelX();
            this.stn011 = new DevComponents.DotNetBar.LabelX();
            this.stn010 = new DevComponents.DotNetBar.LabelX();
            this.stn009 = new DevComponents.DotNetBar.LabelX();
            this.stn008 = new DevComponents.DotNetBar.LabelX();
            this.stn007 = new DevComponents.DotNetBar.LabelX();
            this.stn006 = new DevComponents.DotNetBar.LabelX();
            this.stn005 = new DevComponents.DotNetBar.LabelX();
            this.stn004 = new DevComponents.DotNetBar.LabelX();
            this.stn003 = new DevComponents.DotNetBar.LabelX();
            this.stn002 = new DevComponents.DotNetBar.LabelX();
            this.stn001 = new DevComponents.DotNetBar.LabelX();
            this.groupBox1.SuspendLayout();
            this.tabControl_floor1.SuspendLayout();
            this.page_floor1.SuspendLayout();
            this.SuspendLayout();
            //
            // button20
            //
            this.button20.Location = new System.Drawing.Point(1199, 36);
            this.button20.Name = "button20";
            this.button20.Size = new System.Drawing.Size(75, 23);
            this.button20.TabIndex = 1686;
            this.button20.Text = "生成JSON";
            this.button20.UseVisualStyleBackColor = true;
            this.button20.Click += new System.EventHandler(this.button20_Click);
            //
            // tb_rackCount
            //
            this.tb_rackCount.Location = new System.Drawing.Point(142, 37);
            this.tb_rackCount.Name = "tb_rackCount";
            this.tb_rackCount.Size = new System.Drawing.Size(100, 21);
            this.tb_rackCount.TabIndex = 1687;
            this.tb_rackCount.Text = "16";
            //
            // tb_crnCount
            //
            this.tb_crnCount.Location = new System.Drawing.Point(265, 37);
            this.tb_crnCount.Name = "tb_crnCount";
            this.tb_crnCount.Size = new System.Drawing.Size(100, 21);
            this.tb_crnCount.TabIndex = 1688;
            this.tb_crnCount.Text = "4";
            //
            // tb_stnCount
            //
            this.tb_stnCount.Location = new System.Drawing.Point(390, 37);
            this.tb_stnCount.Name = "tb_stnCount";
            this.tb_stnCount.Size = new System.Drawing.Size(100, 21);
            this.tb_stnCount.TabIndex = 1689;
            this.tb_stnCount.Text = "16";
            //
            // tb_mapName
            //
            this.tb_mapName.Location = new System.Drawing.Point(22, 37);
            this.tb_mapName.Name = "tb_mapName";
            this.tb_mapName.Size = new System.Drawing.Size(100, 21);
            this.tb_mapName.TabIndex = 1690;
            this.tb_mapName.Text = "STWCS";
            //
            // label1
            //
            this.label1.AutoSize = true;
            this.label1.Location = new System.Drawing.Point(26, 15);
            this.label1.Name = "label1";
            this.label1.Size = new System.Drawing.Size(53, 12);
            this.label1.TabIndex = 1691;
            this.label1.Text = "项目名称";
            //
            // label2
            //
            this.label2.AutoSize = true;
            this.label2.Location = new System.Drawing.Point(142, 15);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(53, 12);
            this.label2.TabIndex = 1692;
            this.label2.Text = "货架数量";
            //
            // label5
            //
            this.label5.AutoSize = true;
            this.label5.Location = new System.Drawing.Point(268, 15);
            this.label5.Name = "label5";
            this.label5.Size = new System.Drawing.Size(65, 12);
            this.label5.TabIndex = 1693;
            this.label5.Text = "堆垛机数量";
            //
            // label6
            //
            this.label6.AutoSize = true;
            this.label6.Location = new System.Drawing.Point(388, 15);
            this.label6.Name = "label6";
            this.label6.Size = new System.Drawing.Size(53, 12);
            this.label6.TabIndex = 1694;
            this.label6.Text = "站点数量";
            //
            // groupBox1
            //
            this.groupBox1.Controls.Add(this.radioButton2);
            this.groupBox1.Controls.Add(this.radioButton1);
            this.groupBox1.Location = new System.Drawing.Point(505, 16);
            this.groupBox1.Name = "groupBox1";
            this.groupBox1.Size = new System.Drawing.Size(145, 56);
            this.groupBox1.TabIndex = 1695;
            this.groupBox1.TabStop = false;
            this.groupBox1.Text = "原点方向";
            //
            // radioButton2
            //
            this.radioButton2.AutoSize = true;
            this.radioButton2.Location = new System.Drawing.Point(90, 23);
            this.radioButton2.Name = "radioButton2";
            this.radioButton2.Size = new System.Drawing.Size(47, 16);
            this.radioButton2.TabIndex = 1;
            this.radioButton2.Text = "右侧";
            this.radioButton2.UseVisualStyleBackColor = true;
            //
            // radioButton1
            //
            this.radioButton1.AutoSize = true;
            this.radioButton1.Checked = true;
            this.radioButton1.Location = new System.Drawing.Point(17, 22);
            this.radioButton1.Name = "radioButton1";
            this.radioButton1.Size = new System.Drawing.Size(47, 16);
            this.radioButton1.TabIndex = 0;
            this.radioButton1.TabStop = true;
            this.radioButton1.Text = "左侧";
            this.radioButton1.UseVisualStyleBackColor = true;
            //
            // label7
            //
            this.label7.AutoSize = true;
            this.label7.Location = new System.Drawing.Point(682, 15);
            this.label7.Name = "label7";
            this.label7.Size = new System.Drawing.Size(89, 12);
            this.label7.TabIndex = 1697;
            this.label7.Text = "库位列号起始值";
            //
            // tb_minBay
            //
            this.tb_minBay.Location = new System.Drawing.Point(684, 37);
            this.tb_minBay.Name = "tb_minBay";
            this.tb_minBay.Size = new System.Drawing.Size(65, 21);
            this.tb_minBay.TabIndex = 1696;
            this.tb_minBay.Text = "2";
            //
            // label3
            //
            this.label3.AutoSize = true;
            this.label3.Location = new System.Drawing.Point(816, 16);
            this.label3.Name = "label3";
            this.label3.Size = new System.Drawing.Size(41, 12);
            this.label3.TabIndex = 1700;
            this.label3.Text = "楼层数";
            //
            // tb_floors
            //
            this.tb_floors.Location = new System.Drawing.Point(818, 38);
            this.tb_floors.Name = "tb_floors";
            this.tb_floors.Size = new System.Drawing.Size(65, 21);
            this.tb_floors.TabIndex = 1699;
            this.tb_floors.Text = "1";
            //
            // label4
            //
            this.label4.AutoSize = true;
            this.label4.Location = new System.Drawing.Point(682, 70);
            this.label4.Name = "label4";
            this.label4.Size = new System.Drawing.Size(143, 12);
            this.label4.TabIndex = 1701;
            this.label4.Text = "列最大值在货架Tag中设置";
            //
            // lb_desc16
            //
            this.lb_desc16.AutoSize = true;
            this.lb_desc16.BackColor = System.Drawing.Color.Transparent;
            this.lb_desc16.Font = new System.Drawing.Font("Georgia", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lb_desc16.Location = new System.Drawing.Point(1228, 664);
            this.lb_desc16.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lb_desc16.Name = "lb_desc16";
            this.lb_desc16.Size = new System.Drawing.Size(30, 23);
            this.lb_desc16.TabIndex = 1780;
            this.lb_desc16.Text = "#1";
            //
            // rack4
            //
            this.rack4.AccessibleDescription = "";
            this.rack4.BackColor = System.Drawing.Color.Tomato;
            this.rack4.Location = new System.Drawing.Point(412, 549);
            this.rack4.Margin = new System.Windows.Forms.Padding(2);
            this.rack4.Name = "rack4";
            this.rack4.Size = new System.Drawing.Size(846, 20);
            this.rack4.TabIndex = 1779;
            this.rack4.Tag = "31";
            //
            // rack1
            //
            this.rack1.AccessibleDescription = "";
            this.rack1.BackColor = System.Drawing.Color.Tomato;
            this.rack1.Location = new System.Drawing.Point(413, 642);
            this.rack1.Margin = new System.Windows.Forms.Padding(2);
            this.rack1.Name = "rack1";
            this.rack1.Size = new System.Drawing.Size(846, 20);
            this.rack1.TabIndex = 1775;
            this.rack1.Tag = "31";
            //
            // rack2
            //
            this.rack2.AccessibleDescription = "";
            this.rack2.BackColor = System.Drawing.Color.Tomato;
            this.rack2.Location = new System.Drawing.Point(413, 619);
            this.rack2.Margin = new System.Windows.Forms.Padding(2);
            this.rack2.Name = "rack2";
            this.rack2.Size = new System.Drawing.Size(846, 20);
            this.rack2.TabIndex = 1776;
            this.rack2.Tag = "31";
            //
            // lb_crn4
            //
            this.lb_crn4.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("lb_crn4.BackgroundImage")));
            this.lb_crn4.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.lb_crn4.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.lb_crn4.Location = new System.Drawing.Point(501, 252);
            this.lb_crn4.Name = "lb_crn4";
            this.lb_crn4.Size = new System.Drawing.Size(93, 22);
            this.lb_crn4.TabIndex = 1778;
            this.lb_crn4.Tag = "-4";
            this.lb_crn4.Text = "4";
            this.lb_crn4.Click += new System.EventHandler(this.lb_crn4_Click_1);
            //
            // lb_track1
            //
            this.lb_track1.BackColor = System.Drawing.Color.Black;
            this.lb_track1.Location = new System.Drawing.Point(332, 605);
            this.lb_track1.Name = "lb_track1";
            this.lb_track1.Size = new System.Drawing.Size(971, 2);
            this.lb_track1.TabIndex = 1777;
            //
            // rack3
            //
            this.rack3.AccessibleDescription = "";
            this.rack3.BackColor = System.Drawing.Color.Tomato;
            this.rack3.Location = new System.Drawing.Point(412, 571);
            this.rack3.Margin = new System.Windows.Forms.Padding(2);
            this.rack3.Name = "rack3";
            this.rack3.Size = new System.Drawing.Size(846, 20);
            this.rack3.TabIndex = 1774;
            this.rack3.Tag = "31";
            //
            // rack8
            //
            this.rack8.AccessibleDescription = "";
            this.rack8.BackColor = System.Drawing.Color.Tomato;
            this.rack8.Location = new System.Drawing.Point(412, 435);
            this.rack8.Margin = new System.Windows.Forms.Padding(2);
            this.rack8.Name = "rack8";
            this.rack8.Size = new System.Drawing.Size(846, 20);
            this.rack8.TabIndex = 1773;
            this.rack8.Tag = "31";
            //
            // rack5
            //
            this.rack5.AccessibleDescription = "";
            this.rack5.BackColor = System.Drawing.Color.Tomato;
            this.rack5.Location = new System.Drawing.Point(412, 527);
            this.rack5.Margin = new System.Windows.Forms.Padding(2);
            this.rack5.Name = "rack5";
            this.rack5.Size = new System.Drawing.Size(846, 20);
            this.rack5.TabIndex = 1769;
            this.rack5.Tag = "31";
            //
            // rack6
            //
            this.rack6.AccessibleDescription = "";
            this.rack6.BackColor = System.Drawing.Color.Tomato;
            this.rack6.Location = new System.Drawing.Point(412, 505);
            this.rack6.Margin = new System.Windows.Forms.Padding(2);
            this.rack6.Name = "rack6";
            this.rack6.Size = new System.Drawing.Size(846, 20);
            this.rack6.TabIndex = 1770;
            this.rack6.Tag = "31";
            //
            // lb_crn3
            //
            this.lb_crn3.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("lb_crn3.BackgroundImage")));
            this.lb_crn3.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.lb_crn3.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.lb_crn3.Location = new System.Drawing.Point(512, 367);
            this.lb_crn3.Name = "lb_crn3";
            this.lb_crn3.Size = new System.Drawing.Size(93, 22);
            this.lb_crn3.TabIndex = 1772;
            this.lb_crn3.Tag = "-3";
            this.lb_crn3.Text = "3";
            //
            // lb_track2
            //
            this.lb_track2.BackColor = System.Drawing.Color.Black;
            this.lb_track2.Location = new System.Drawing.Point(332, 489);
            this.lb_track2.Name = "lb_track2";
            this.lb_track2.Size = new System.Drawing.Size(972, 2);
            this.lb_track2.TabIndex = 1771;
            this.lb_track2.Click += new System.EventHandler(this.lb_track2_Click_1);
            //
            // rack7
            //
            this.rack7.AccessibleDescription = "";
            this.rack7.BackColor = System.Drawing.Color.Tomato;
            this.rack7.Location = new System.Drawing.Point(412, 457);
            this.rack7.Margin = new System.Windows.Forms.Padding(2);
            this.rack7.Name = "rack7";
            this.rack7.Size = new System.Drawing.Size(846, 20);
            this.rack7.TabIndex = 1768;
            this.rack7.Tag = "31";
            //
            // rack12
            //
            this.rack12.AccessibleDescription = "";
            this.rack12.BackColor = System.Drawing.Color.Tomato;
            this.rack12.Location = new System.Drawing.Point(412, 322);
            this.rack12.Margin = new System.Windows.Forms.Padding(2);
            this.rack12.Name = "rack12";
            this.rack12.Size = new System.Drawing.Size(846, 20);
            this.rack12.TabIndex = 1767;
            this.rack12.Tag = "31";
            //
            // rack9
            //
            this.rack9.AccessibleDescription = "";
            this.rack9.BackColor = System.Drawing.Color.Tomato;
            this.rack9.Location = new System.Drawing.Point(412, 413);
            this.rack9.Margin = new System.Windows.Forms.Padding(2);
            this.rack9.Name = "rack9";
            this.rack9.Size = new System.Drawing.Size(846, 20);
            this.rack9.TabIndex = 1763;
            this.rack9.Tag = "31";
            //
            // rack10
            //
            this.rack10.AccessibleDescription = "";
            this.rack10.BackColor = System.Drawing.Color.Tomato;
            this.rack10.Location = new System.Drawing.Point(412, 391);
            this.rack10.Margin = new System.Windows.Forms.Padding(2);
            this.rack10.Name = "rack10";
            this.rack10.Size = new System.Drawing.Size(846, 20);
            this.rack10.TabIndex = 1764;
            this.rack10.Tag = "31";
            //
            // lb_crn2
            //
            this.lb_crn2.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("lb_crn2.BackgroundImage")));
            this.lb_crn2.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.lb_crn2.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.lb_crn2.Location = new System.Drawing.Point(501, 481);
            this.lb_crn2.Name = "lb_crn2";
            this.lb_crn2.Size = new System.Drawing.Size(93, 22);
            this.lb_crn2.TabIndex = 1766;
            this.lb_crn2.Tag = "-2";
            this.lb_crn2.Text = "2";
            //
            // lb_track5
            //
            this.lb_track5.BackColor = System.Drawing.Color.Black;
            this.lb_track5.Location = new System.Drawing.Point(333, 376);
            this.lb_track5.Name = "lb_track5";
            this.lb_track5.Size = new System.Drawing.Size(974, 2);
            this.lb_track5.TabIndex = 1765;
            //
            // rack11
            //
            this.rack11.AccessibleDescription = "";
            this.rack11.BackColor = System.Drawing.Color.Tomato;
            this.rack11.Location = new System.Drawing.Point(412, 344);
            this.rack11.Margin = new System.Windows.Forms.Padding(2);
            this.rack11.Name = "rack11";
            this.rack11.Size = new System.Drawing.Size(846, 20);
            this.rack11.TabIndex = 1762;
            this.rack11.Tag = "31";
            //
            // rack16
            //
            this.rack16.AccessibleDescription = "";
            this.rack16.BackColor = System.Drawing.Color.Tomato;
            this.rack16.Location = new System.Drawing.Point(412, 206);
            this.rack16.Margin = new System.Windows.Forms.Padding(2);
            this.rack16.Name = "rack16";
            this.rack16.Size = new System.Drawing.Size(846, 20);
            this.rack16.TabIndex = 1756;
            this.rack16.Tag = "31";
            //
            // rack13
            //
            this.rack13.AccessibleDescription = "";
            this.rack13.BackColor = System.Drawing.Color.Tomato;
            this.rack13.Location = new System.Drawing.Point(412, 300);
            this.rack13.Margin = new System.Windows.Forms.Padding(2);
            this.rack13.Name = "rack13";
            this.rack13.Size = new System.Drawing.Size(846, 20);
            this.rack13.TabIndex = 1758;
            this.rack13.Tag = "31";
            //
            // rack15
            //
            this.rack15.AccessibleDescription = "";
            this.rack15.BackColor = System.Drawing.Color.Tomato;
            this.rack15.Location = new System.Drawing.Point(412, 228);
            this.rack15.Margin = new System.Windows.Forms.Padding(2);
            this.rack15.Name = "rack15";
            this.rack15.Size = new System.Drawing.Size(846, 20);
            this.rack15.TabIndex = 1755;
            this.rack15.Tag = "31";
            //
            // lb_desc1
            //
            this.lb_desc1.AutoSize = true;
            this.lb_desc1.BackColor = System.Drawing.Color.Transparent;
            this.lb_desc1.Font = new System.Drawing.Font("Georgia", 14F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.lb_desc1.Location = new System.Drawing.Point(1217, 181);
            this.lb_desc1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.lb_desc1.Name = "lb_desc1";
            this.lb_desc1.Size = new System.Drawing.Size(41, 23);
            this.lb_desc1.TabIndex = 1757;
            this.lb_desc1.Text = "#16";
            //
            // lb_track4
            //
            this.lb_track4.BackColor = System.Drawing.Color.Black;
            this.lb_track4.Location = new System.Drawing.Point(335, 260);
            this.lb_track4.Name = "lb_track4";
            this.lb_track4.Size = new System.Drawing.Size(975, 2);
            this.lb_track4.TabIndex = 1760;
            this.lb_track4.Click += new System.EventHandler(this.lb_track4_Click_1);
            //
            // rack14
            //
            this.rack14.AccessibleDescription = "";
            this.rack14.BackColor = System.Drawing.Color.Tomato;
            this.rack14.Location = new System.Drawing.Point(412, 278);
            this.rack14.Margin = new System.Windows.Forms.Padding(2);
            this.rack14.Name = "rack14";
            this.rack14.Size = new System.Drawing.Size(846, 20);
            this.rack14.TabIndex = 1759;
            this.rack14.Tag = "31";
            //
            // lb_crn1
            //
            this.lb_crn1.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("lb_crn1.BackgroundImage")));
            this.lb_crn1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.lb_crn1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.lb_crn1.Location = new System.Drawing.Point(501, 595);
            this.lb_crn1.Name = "lb_crn1";
            this.lb_crn1.Size = new System.Drawing.Size(93, 22);
            this.lb_crn1.TabIndex = 1761;
            this.lb_crn1.Tag = "-1";
            this.lb_crn1.Text = "1";
            //
            // tabControl_floor1
            //
            this.tabControl_floor1.Alignment = System.Windows.Forms.TabAlignment.Left;
            this.tabControl_floor1.Controls.Add(this.page_floor1);
            this.tabControl_floor1.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed;
            this.tabControl_floor1.Location = new System.Drawing.Point(80, 68);
            this.tabControl_floor1.Multiline = true;
            this.tabControl_floor1.Name = "tabControl_floor1";
            this.tabControl_floor1.SelectedIndex = 0;
            this.tabControl_floor1.Size = new System.Drawing.Size(1320, 744);
            this.tabControl_floor1.TabIndex = 1785;
            //
            // page_floor1
            //
            this.page_floor1.Controls.Add(this.lb_trCart21);
            this.page_floor1.Controls.Add(this.lb_trCart22);
            this.page_floor1.Controls.Add(this.stn016);
            this.page_floor1.Controls.Add(this.stn015);
            this.page_floor1.Controls.Add(this.stn014);
            this.page_floor1.Controls.Add(this.stn013);
            this.page_floor1.Controls.Add(this.stn012);
            this.page_floor1.Controls.Add(this.stn011);
            this.page_floor1.Controls.Add(this.stn010);
            this.page_floor1.Controls.Add(this.stn009);
            this.page_floor1.Controls.Add(this.stn008);
            this.page_floor1.Controls.Add(this.stn007);
            this.page_floor1.Controls.Add(this.stn006);
            this.page_floor1.Controls.Add(this.stn005);
            this.page_floor1.Controls.Add(this.stn004);
            this.page_floor1.Controls.Add(this.stn003);
            this.page_floor1.Controls.Add(this.stn002);
            this.page_floor1.Controls.Add(this.stn001);
            this.page_floor1.Location = new System.Drawing.Point(22, 4);
            this.page_floor1.Name = "page_floor1";
            this.page_floor1.Padding = new System.Windows.Forms.Padding(3);
            this.page_floor1.Size = new System.Drawing.Size(1294, 736);
            this.page_floor1.TabIndex = 0;
            this.page_floor1.Text = "1F";
            this.page_floor1.UseVisualStyleBackColor = true;
            //
            // lb_trCart21
            //
            this.lb_trCart21.BackColor = System.Drawing.Color.Black;
            this.lb_trCart21.Location = new System.Drawing.Point(141, 21);
            this.lb_trCart21.Name = "lb_trCart21";
            this.lb_trCart21.Size = new System.Drawing.Size(6, 569);
            this.lb_trCart21.TabIndex = 1748;
            //
            // lb_trCart22
            //
            this.lb_trCart22.BackColor = System.Drawing.Color.Black;
            this.lb_trCart22.Location = new System.Drawing.Point(195, 21);
            this.lb_trCart22.Name = "lb_trCart22";
            this.lb_trCart22.Size = new System.Drawing.Size(6, 569);
            this.lb_trCart22.TabIndex = 1747;
            //
            // stn016
            //
            this.stn016.BackColor = System.Drawing.Color.Gray;
            this.stn016.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn016.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn016.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn016.ForeColor = System.Drawing.Color.White;
            this.stn016.Location = new System.Drawing.Point(137, 385);
            this.stn016.Name = "stn016";
            this.stn016.Size = new System.Drawing.Size(69, 20);
            this.stn016.TabIndex = 1743;
            this.stn016.Tag = "016";
            this.stn016.Text = "016";
            this.stn016.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn015
            //
            this.stn015.BackColor = System.Drawing.Color.Gray;
            this.stn015.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn015.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn015.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn015.ForeColor = System.Drawing.Color.White;
            this.stn015.Location = new System.Drawing.Point(208, 21);
            this.stn015.Name = "stn015";
            this.stn015.Size = new System.Drawing.Size(100, 20);
            this.stn015.TabIndex = 1742;
            this.stn015.Tag = "015";
            this.stn015.Text = "015";
            this.stn015.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn014
            //
            this.stn014.BackColor = System.Drawing.Color.Gray;
            this.stn014.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn014.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn014.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn014.ForeColor = System.Drawing.Color.White;
            this.stn014.Location = new System.Drawing.Point(311, 21);
            this.stn014.Name = "stn014";
            this.stn014.Size = new System.Drawing.Size(92, 20);
            this.stn014.TabIndex = 1741;
            this.stn014.Tag = "014";
            this.stn014.Text = "014";
            this.stn014.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn013
            //
            this.stn013.BackColor = System.Drawing.Color.Gray;
            this.stn013.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn013.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn013.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn013.ForeColor = System.Drawing.Color.White;
            this.stn013.Location = new System.Drawing.Point(311, 43);
            this.stn013.Name = "stn013";
            this.stn013.Size = new System.Drawing.Size(92, 20);
            this.stn013.TabIndex = 1740;
            this.stn013.Tag = "013";
            this.stn013.Text = "013";
            this.stn013.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn012
            //
            this.stn012.BackColor = System.Drawing.Color.Gray;
            this.stn012.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn012.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn012.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn012.ForeColor = System.Drawing.Color.White;
            this.stn012.Location = new System.Drawing.Point(311, 66);
            this.stn012.Name = "stn012";
            this.stn012.Size = new System.Drawing.Size(92, 20);
            this.stn012.TabIndex = 1739;
            this.stn012.Tag = "012";
            this.stn012.Text = "012";
            this.stn012.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn011
            //
            this.stn011.BackColor = System.Drawing.Color.Gray;
            this.stn011.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn011.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn011.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn011.ForeColor = System.Drawing.Color.White;
            this.stn011.Location = new System.Drawing.Point(311, 88);
            this.stn011.Name = "stn011";
            this.stn011.Size = new System.Drawing.Size(92, 20);
            this.stn011.TabIndex = 1738;
            this.stn011.Tag = "011";
            this.stn011.Text = "011";
            this.stn011.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn010
            //
            this.stn010.BackColor = System.Drawing.Color.Gray;
            this.stn010.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn010.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn010.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn010.ForeColor = System.Drawing.Color.White;
            this.stn010.Location = new System.Drawing.Point(311, 111);
            this.stn010.Name = "stn010";
            this.stn010.Size = new System.Drawing.Size(92, 20);
            this.stn010.TabIndex = 1737;
            this.stn010.Tag = "010";
            this.stn010.Text = "010";
            this.stn010.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn009
            //
            this.stn009.BackColor = System.Drawing.Color.Gray;
            this.stn009.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn009.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn009.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn009.ForeColor = System.Drawing.Color.White;
            this.stn009.Location = new System.Drawing.Point(208, 111);
            this.stn009.Name = "stn009";
            this.stn009.Size = new System.Drawing.Size(100, 20);
            this.stn009.TabIndex = 1736;
            this.stn009.Tag = "009";
            this.stn009.Text = "009";
            this.stn009.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn008
            //
            this.stn008.BackColor = System.Drawing.Color.Gray;
            this.stn008.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn008.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn008.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn008.ForeColor = System.Drawing.Color.White;
            this.stn008.Location = new System.Drawing.Point(208, 156);
            this.stn008.Name = "stn008";
            this.stn008.Size = new System.Drawing.Size(100, 20);
            this.stn008.TabIndex = 1735;
            this.stn008.Tag = "008";
            this.stn008.Text = "008";
            this.stn008.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn007
            //
            this.stn007.BackColor = System.Drawing.Color.Gray;
            this.stn007.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn007.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn007.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn007.ForeColor = System.Drawing.Color.White;
            this.stn007.Location = new System.Drawing.Point(209, 206);
            this.stn007.Name = "stn007";
            this.stn007.Size = new System.Drawing.Size(100, 20);
            this.stn007.TabIndex = 1734;
            this.stn007.Tag = "007";
            this.stn007.Text = "007";
            this.stn007.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn006
            //
            this.stn006.BackColor = System.Drawing.Color.Gray;
            this.stn006.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn006.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn006.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn006.ForeColor = System.Drawing.Color.White;
            this.stn006.Location = new System.Drawing.Point(209, 272);
            this.stn006.Name = "stn006";
            this.stn006.Size = new System.Drawing.Size(100, 20);
            this.stn006.TabIndex = 1733;
            this.stn006.Tag = "006";
            this.stn006.Text = "006";
            this.stn006.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn005
            //
            this.stn005.BackColor = System.Drawing.Color.Gray;
            this.stn005.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn005.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn005.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn005.ForeColor = System.Drawing.Color.White;
            this.stn005.Location = new System.Drawing.Point(209, 319);
            this.stn005.Name = "stn005";
            this.stn005.Size = new System.Drawing.Size(100, 20);
            this.stn005.TabIndex = 1732;
            this.stn005.Tag = "005";
            this.stn005.Text = "005";
            this.stn005.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn004
            //
            this.stn004.BackColor = System.Drawing.Color.Gray;
            this.stn004.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn004.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn004.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn004.ForeColor = System.Drawing.Color.White;
            this.stn004.Location = new System.Drawing.Point(209, 385);
            this.stn004.Name = "stn004";
            this.stn004.Size = new System.Drawing.Size(100, 20);
            this.stn004.TabIndex = 1731;
            this.stn004.Tag = "004";
            this.stn004.Text = "004";
            this.stn004.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn003
            //
            this.stn003.BackColor = System.Drawing.Color.Gray;
            this.stn003.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn003.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn003.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn003.ForeColor = System.Drawing.Color.White;
            this.stn003.Location = new System.Drawing.Point(209, 433);
            this.stn003.Name = "stn003";
            this.stn003.Size = new System.Drawing.Size(100, 20);
            this.stn003.TabIndex = 1730;
            this.stn003.Tag = "003";
            this.stn003.Text = "003";
            this.stn003.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn002
            //
            this.stn002.BackColor = System.Drawing.Color.Gray;
            this.stn002.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn002.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn002.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn002.ForeColor = System.Drawing.Color.White;
            this.stn002.Location = new System.Drawing.Point(209, 499);
            this.stn002.Name = "stn002";
            this.stn002.Size = new System.Drawing.Size(100, 20);
            this.stn002.TabIndex = 1729;
            this.stn002.Tag = "002";
            this.stn002.Text = "002";
            this.stn002.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // stn001
            //
            this.stn001.BackColor = System.Drawing.Color.Gray;
            this.stn001.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            //
            //
            //
            this.stn001.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.stn001.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.stn001.ForeColor = System.Drawing.Color.White;
            this.stn001.Location = new System.Drawing.Point(209, 547);
            this.stn001.Name = "stn001";
            this.stn001.Size = new System.Drawing.Size(100, 20);
            this.stn001.TabIndex = 1663;
            this.stn001.Tag = "001";
            this.stn001.Text = "001";
            this.stn001.TextAlignment = System.Drawing.StringAlignment.Center;
            //
            // Form2
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(1607, 800);
            this.Controls.Add(this.lb_desc16);
            this.Controls.Add(this.rack4);
            this.Controls.Add(this.rack1);
            this.Controls.Add(this.rack2);
            this.Controls.Add(this.lb_crn4);
            this.Controls.Add(this.lb_track1);
            this.Controls.Add(this.rack3);
            this.Controls.Add(this.rack8);
            this.Controls.Add(this.rack5);
            this.Controls.Add(this.rack6);
            this.Controls.Add(this.lb_crn3);
            this.Controls.Add(this.lb_track2);
            this.Controls.Add(this.rack7);
            this.Controls.Add(this.rack12);
            this.Controls.Add(this.rack9);
            this.Controls.Add(this.rack10);
            this.Controls.Add(this.lb_crn2);
            this.Controls.Add(this.lb_track5);
            this.Controls.Add(this.rack11);
            this.Controls.Add(this.rack16);
            this.Controls.Add(this.rack13);
            this.Controls.Add(this.rack15);
            this.Controls.Add(this.lb_desc1);
            this.Controls.Add(this.lb_track4);
            this.Controls.Add(this.rack14);
            this.Controls.Add(this.lb_crn1);
            this.Controls.Add(this.label4);
            this.Controls.Add(this.label3);
            this.Controls.Add(this.tb_floors);
            this.Controls.Add(this.label7);
            this.Controls.Add(this.tb_minBay);
            this.Controls.Add(this.groupBox1);
            this.Controls.Add(this.label6);
            this.Controls.Add(this.label5);
            this.Controls.Add(this.label2);
            this.Controls.Add(this.label1);
            this.Controls.Add(this.tb_mapName);
            this.Controls.Add(this.tb_stnCount);
            this.Controls.Add(this.tb_crnCount);
            this.Controls.Add(this.tb_rackCount);
            this.Controls.Add(this.button20);
            this.Controls.Add(this.tabControl_floor1);
            this.Name = "Form2";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "WCS监控地图编辑器 V20220526";
            this.Load += new System.EventHandler(this.Form2_Load);
            this.groupBox1.ResumeLayout(false);
            this.groupBox1.PerformLayout();
            this.tabControl_floor1.ResumeLayout(false);
            this.page_floor1.ResumeLayout(false);
            this.ResumeLayout(false);
            this.PerformLayout();
        }
        #endregion
        private System.Windows.Forms.Button button20;
        private System.Windows.Forms.TextBox tb_rackCount;
        private System.Windows.Forms.TextBox tb_crnCount;
        private System.Windows.Forms.TextBox tb_stnCount;
        private System.Windows.Forms.TextBox tb_mapName;
        private System.Windows.Forms.Label label1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Label label5;
        private System.Windows.Forms.Label label6;
        private System.Windows.Forms.GroupBox groupBox1;
        private System.Windows.Forms.RadioButton radioButton2;
        private System.Windows.Forms.RadioButton radioButton1;
        private System.Windows.Forms.Label label7;
        private System.Windows.Forms.TextBox tb_minBay;
        private System.Windows.Forms.Label label3;
        private System.Windows.Forms.TextBox tb_floors;
        private System.Windows.Forms.Label label4;
        private System.Windows.Forms.Label lb_desc16;
        private System.Windows.Forms.Panel rack4;
        private System.Windows.Forms.Panel rack1;
        private System.Windows.Forms.Panel rack2;
        private DevComponents.DotNetBar.LabelX lb_crn4;
        private System.Windows.Forms.Label lb_track1;
        private System.Windows.Forms.Panel rack3;
        private System.Windows.Forms.Panel rack8;
        private System.Windows.Forms.Panel rack5;
        private System.Windows.Forms.Panel rack6;
        private DevComponents.DotNetBar.LabelX lb_crn3;
        private System.Windows.Forms.Label lb_track2;
        private System.Windows.Forms.Panel rack7;
        private System.Windows.Forms.Panel rack12;
        private System.Windows.Forms.Panel rack9;
        private System.Windows.Forms.Panel rack10;
        private DevComponents.DotNetBar.LabelX lb_crn2;
        private System.Windows.Forms.Label lb_track5;
        private System.Windows.Forms.Panel rack11;
        private System.Windows.Forms.Panel rack16;
        private System.Windows.Forms.Panel rack13;
        private System.Windows.Forms.Panel rack15;
        private System.Windows.Forms.Label lb_desc1;
        private System.Windows.Forms.Label lb_track4;
        private System.Windows.Forms.Panel rack14;
        private DevComponents.DotNetBar.LabelX lb_crn1;
        private System.Windows.Forms.TabControl tabControl_floor1;
        private System.Windows.Forms.TabPage page_floor1;
        private System.Windows.Forms.Label lb_trCart21;
        private System.Windows.Forms.Label lb_trCart22;
        private DevComponents.DotNetBar.LabelX stn016;
        private DevComponents.DotNetBar.LabelX stn015;
        private DevComponents.DotNetBar.LabelX stn014;
        private DevComponents.DotNetBar.LabelX stn013;
        private DevComponents.DotNetBar.LabelX stn012;
        private DevComponents.DotNetBar.LabelX stn011;
        private DevComponents.DotNetBar.LabelX stn010;
        private DevComponents.DotNetBar.LabelX stn009;
        private DevComponents.DotNetBar.LabelX stn008;
        private DevComponents.DotNetBar.LabelX stn007;
        private DevComponents.DotNetBar.LabelX stn006;
        private DevComponents.DotNetBar.LabelX stn005;
        private DevComponents.DotNetBar.LabelX stn004;
        private DevComponents.DotNetBar.LabelX stn003;
        private DevComponents.DotNetBar.LabelX stn002;
        private DevComponents.DotNetBar.LabelX stn001;
    }
}
version/STWCSMapEditor/WCS/Form2.cs
New file
@@ -0,0 +1,567 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using com.force.json;
namespace WCS
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        private void button20_Click(object sender, EventArgs e)
        {
            JSONObject json = new JSONObject();
            json.put("mapName", tb_mapName.Text);
            json.put("rackCount", int.Parse(tb_rackCount.Text));
            json.put("crnCount", int.Parse(tb_crnCount.Text));
            json.put("stbCount", int.Parse(tb_stnCount.Text));
            json.put("hpPosition",radioButton1.Checked ? 0 : 1); //0表示左边是原点,1表示右边是原点
            json.put("minBayNo", int.Parse(tb_minBay.Text));
            json.put("floors", int.Parse(tb_floors.Text));  //输送站点楼层数
            JSONArray racks = getRackArray(1);
            if (racks.length() > 0)
            {
                json.put("racks", racks);
            }
            JSONArray rackDescs = getRackArray(5);
            if (rackDescs.length() > 0)
            {
                json.put("rackDescs", rackDescs);
            }
            JSONArray crns = getRackArray(2);
            if (crns.length() > 0)
            {
                json.put("crns", crns);
            }
            //JSONArray tracks = getRackArray(3);
            //if (tracks.length() > 0)
            //{
            //    json.put("tracks", tracks);
            //}
            //if (int.Parse(tb_floors.Text) > 1)
            //{
            JSONArray areas = getFloorsArray();
            if (areas.length() > 0)
            {
                json.put("areas", areas);
            }
            //}
            //else
            //{
            //    JSONArray stns = getRackArray(4);
            //    if (stns.length() > 0)
            //    {
            //        json.put("stns", stns);
            //    }
            //}
            bool result = writeJsonFile(tb_mapName.Text + ".json", json.ToString());
            if (result)
            {
                MessageBox.Show("保存成功");
            }
            else
            {
                MessageBox.Show("保存失败");
            }
        }
        /// <summary>
        /// ä¿å­˜json文件
        /// </summary>
        /// <param name="fileName"></param>
        /// <param name="json"></param>
        public bool writeJsonFile(string fileName, string json)
        {
            bool result = false;
            DateTime dt = DateTime.Now;
            string FileName = Application.StartupPath + "\\json\\" + fileName;
            try
            {
                if (!Directory.Exists(Application.StartupPath + "\\json"))
                {
                    Directory.CreateDirectory(Application.StartupPath + "\\json");
                }
                if (File.Exists(FileName))
                {
                    DialogResult dr = MessageBox.Show("文件已存在,确定覆盖吗?", "保存文件", MessageBoxButtons.OKCancel);
                    if (dr == DialogResult.Cancel)//如果点击“确定”按钮
                    {
                        return result;
                    }
                    else
                    {
                        File.Delete(FileName);
                    }
                }
                StreamWriter fs1 = new StreamWriter(FileName, true);//创建写入文件
                //StreamWriter sw = new StreamWriter(fs1);
                //fs1.Write(json);//开始写入值
                fs1.WriteLine(json);//开始写入值
                //sw.Close();
                fs1.Close();
                result = true;
            }
            catch (Exception em)
            {
                MessageBox.Show("保存json出错===>>" + em.Message);
            }
            return result;
        }
        /// <summary>
        /// è´§æž¶æŽ’æ•°JSON数组,控件类型,1==>货架,2==>堆垛机,3==>轨道,4==>站点,5==>货架编号
        /// </summary>
        /// <param name="type">控件类型,1==>货架,2==>堆垛机,3==>轨道,4==>站点,5==>货架编号</param>
        /// <returns></returns>
        private JSONArray getRackArray(int type)
        {
            JSONArray jsonArray = new JSONArray();
            for (int i = 0; i < this.Controls.Count; i++)
            {
                if (type == 1)
                {
                    if (this.Controls[i] is System.Windows.Forms.Panel)
                    {
                        Panel panel = this.Controls[i] as System.Windows.Forms.Panel;
                        if (panel.Name.IndexOf("rack") >= 0)
                        {
                            JSONObject json = new JSONObject();
                            json.put("type", "rack");
                            json.put("id", panel.Name);
                            json.put("top", panel.Top);
                            json.put("left", panel.Left);
                            json.put("width", panel.Width);
                            json.put("height", panel.Height);
                            json.put("minBayNo", int.Parse(tb_minBay.Text));
                            json.put("maxBayNo", Convert.ToInt32(panel.Tag));
                            jsonArray.put(json);
                            //MessageBox.Show(panel.Name);
                        }
                    }
                }
                else if (type == 2)
                {
                    //堆垛机
                    if (this.Controls[i] is DevComponents.DotNetBar.LabelX)
                    {
                        DevComponents.DotNetBar.LabelX lb_crn = this.Controls[i] as DevComponents.DotNetBar.LabelX;
                        if (lb_crn.Name.IndexOf("lb_crn") >= 0)
                        {
                            JSONObject json = new JSONObject();
                            json.put("type", "crane");
                            string crnId = lb_crn.Name.Substring(3, 3) + "-" + lb_crn.Name.Substring(6, 1);
                            json.put("id", crnId);
                            json.put("text", lb_crn.Text);
                            json.put("top", lb_crn.Top);
                            json.put("left", lb_crn.Left);
                            json.put("width", lb_crn.Width);
                            json.put("height", lb_crn.Height);
                            jsonArray.put(json);
                        }
                    }
                    //轨道
                    if (this.Controls[i] is System.Windows.Forms.Label)
                    {
                        System.Windows.Forms.Label lb_track = this.Controls[i] as System.Windows.Forms.Label;
                        if (lb_track.Name.IndexOf("lb_track") >= 0)
                        {
                            JSONObject json = new JSONObject();
                            json.put("type", "track");
                            json.put("id", lb_track.Name);
                            json.put("text", lb_track.Text);
                            json.put("top", lb_track.Top);
                            json.put("left", lb_track.Left);
                            json.put("width", lb_track.Width);
                            json.put("height", lb_track.Height);
                            jsonArray.put(json);
                        }
                    }
                }
                else if (type == 3)
                {
                    if (this.Controls[i] is System.Windows.Forms.Label)
                    {
                        System.Windows.Forms.Label lb_track = this.Controls[i] as System.Windows.Forms.Label;
                        if (lb_track.Name.IndexOf("lb_track") >= 0)
                        {
                            JSONObject json = new JSONObject();
                            json.put("type", "track");
                            json.put("id", lb_track.Name);
                            json.put("text", lb_track.Text);
                            json.put("top", lb_track.Top);
                            json.put("left", lb_track.Left);
                            json.put("width", lb_track.Width);
                            json.put("height", lb_track.Height);
                            jsonArray.put(json);
                        }
                    }
                }
                else if (type == 4)
                {
                    if (this.Controls[i] is DevComponents.DotNetBar.LabelX)
                    {
                        DevComponents.DotNetBar.LabelX lb_stn = this.Controls[i] as DevComponents.DotNetBar.LabelX;
                        if (lb_stn.Name.IndexOf("stn") >= 0)
                        {
                            JSONObject json = new JSONObject();
                            json.put("type", "stn");
                            string stnId = "site-" + lb_stn.Name.Replace("stn", "");
                            json.put("id", stnId);
                            json.put("text", lb_stn.Text);
                            json.put("top", lb_stn.Top);
                            json.put("left", lb_stn.Left);
                            json.put("width", lb_stn.Width);
                            json.put("height", lb_stn.Height);
                            jsonArray.put(json);
                        }
                    }
                }
                else if (type == 5)
                {
                    if (this.Controls[i] is System.Windows.Forms.Label)
                    {
                        System.Windows.Forms.Label lb_desc = this.Controls[i] as System.Windows.Forms.Label;
                        if (lb_desc.Name.IndexOf("lb_desc") >= 0)
                        {
                            JSONObject json = new JSONObject();
                            json.put("type", "rackDescs");
                            json.put("id", lb_desc.Name);
                            json.put("text", lb_desc.Text);
                            json.put("top", lb_desc.Top);
                            json.put("left", lb_desc.Left);
                            json.put("width", lb_desc.Width);
                            json.put("height", lb_desc.Height);
                            jsonArray.put(json);
                        }
                    }
                }
            }
            return jsonArray;
        }
        /// <summary>
        /// å¤šæ¥¼å±‚站点信息
        /// </summary>
        /// <returns></returns>
        private JSONArray getFloorsArray()
        {
            JSONArray jsonArray = new JSONArray();
            for (int i = 0; i < this.Controls.Count; i++)
            {
                if (this.Controls[i] is System.Windows.Forms.TabControl)
                {
                    TabControl tabControl_floor = this.Controls[i] as System.Windows.Forms.TabControl;
                    if (tabControl_floor.Name.IndexOf("tabControl_floor") >= 0)
                    {
                        JSONObject jsonControl = new JSONObject();
                        jsonControl.put("type", "Control_floor");
                        jsonControl.put("id", tabControl_floor.Name);
                        jsonControl.put("text", "楼层");
                        jsonControl.put("top", tabControl_floor.Top);
                        jsonControl.put("left", tabControl_floor.Left);
                        jsonControl.put("width", tabControl_floor.Width);
                        jsonControl.put("height", tabControl_floor.Height);
                        JSONArray pageArray = new JSONArray();
                        for (int j = 0; j < this.Controls[i].Controls.Count; j++)
                        {
                            if (this.Controls[i].Controls[j] is System.Windows.Forms.TabPage)
                            {
                                TabPage page_floor = this.Controls[i].Controls[j] as System.Windows.Forms.TabPage;
                                if (page_floor.Name.IndexOf("page_floor") >= 0)
                                {
                                    JSONObject jsonPageFloor = new JSONObject();
                                    jsonPageFloor.put("type", "floor");
                                    jsonPageFloor.put("id", page_floor.Name);
                                    jsonPageFloor.put("text", page_floor.Text);
                                    jsonPageFloor.put("top", page_floor.Top);
                                    jsonPageFloor.put("left", page_floor.Left);
                                    jsonPageFloor.put("width", page_floor.Width);
                                    jsonPageFloor.put("height", page_floor.Height);
                                    JSONArray stnsArray = new JSONArray();
                                    for (int k = 0; k < this.Controls[i].Controls[j].Controls.Count; k++)
                                    {
                                        //站点
                                        if (this.Controls[i].Controls[j].Controls[k] is DevComponents.DotNetBar.LabelX)
                                        {
                                            DevComponents.DotNetBar.LabelX lb_stn = this.Controls[i].Controls[j].Controls[k] as DevComponents.DotNetBar.LabelX;
                                            if (lb_stn.Name.IndexOf("stn") >= 0)
                                            {
                                                JSONObject json = new JSONObject();
                                                json.put("type", "stn");
                                                string stnId = "site-" + lb_stn.Name.Replace("stn", "");
                                                json.put("id", stnId);
                                                json.put("text", lb_stn.Text);
                                                json.put("top", lb_stn.Top + tabControl_floor.Top + 4);
                                                json.put("left", lb_stn.Left + tabControl_floor.Left + 22);
                                                json.put("width", lb_stn.Width);
                                                json.put("height", lb_stn.Height);
                                                stnsArray.put(json);
                                            }
                                        }
                                        //轨道
                                        if (this.Controls[i].Controls[j].Controls[k] is System.Windows.Forms.Label)
                                        {
                                            System.Windows.Forms.Label lb_trCart = this.Controls[i].Controls[j].Controls[k] as System.Windows.Forms.Label;
                                            if (lb_trCart.Name.IndexOf("lb_trCart") >= 0)
                                            {
                                                JSONObject json = new JSONObject();
                                                json.put("type", "track");
                                                json.put("id", lb_trCart.Name);
                                                json.put("text", lb_trCart.Text);
                                                json.put("top", lb_trCart.Top + tabControl_floor.Top + 4);
                                                json.put("left", lb_trCart.Left + tabControl_floor.Left + 22);
                                                json.put("width", lb_trCart.Width);
                                                json.put("height", lb_trCart.Height);
                                                stnsArray.put(json);
                                            }
                                        }
                                    }
                                    jsonPageFloor.put("stns",stnsArray);
                                    pageArray.put(jsonPageFloor);
                                }
                            }
                        }
                        jsonControl.put("floors", pageArray);
                        jsonArray.put(jsonControl);
                    }
                }
            }
            return jsonArray;
        }
        private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
        {
            //SolidBrush _Brush = new SolidBrush(Color.Black);//单⾊画刷
            //RectangleF _TabTextArea = (RectangleF)tabControl_floor1.GetTabRect(e.Index);//绘制区域
            //StringFormat _sf = new StringFormat();//封装⽂本布局格式信息
            //_sf.LineAlignment = StringAlignment.Center;
            //_sf.Alignment = StringAlignment.Center;
            //e.Graphics.DrawString(tabControl_floor1.Controls[e.Index].Text, SystemInformation.MenuFont, _Brush, _TabTextArea,_sf);
        }
        private void stn105_Click(object sender, EventArgs e)
        {
        }
        private void stn102_Click(object sender, EventArgs e)
        {
        }
        private void page_floor4_Click(object sender, EventArgs e)
        {
        }
        private void panel2_Paint(object sender, PaintEventArgs e)
        {
        }
        private void label8_Click(object sender, EventArgs e)
        {
        }
        private void label9_Click(object sender, EventArgs e)
        {
        }
        private void labelX1_Click(object sender, EventArgs e)
        {
        }
        private void rack2_Paint(object sender, PaintEventArgs e)
        {
        }
        private void label9_Click_1(object sender, EventArgs e)
        {
        }
        private void labelX16_Click(object sender, EventArgs e)
        {
        }
        private void labelX1_Click_1(object sender, EventArgs e)
        {
        }
        private void lb_track3_Click(object sender, EventArgs e)
        {
        }
        private void lb_desc1_Click(object sender, EventArgs e)
        {
        }
        private void rack16_Paint(object sender, PaintEventArgs e)
        {
        }
        private void rack15_Paint(object sender, PaintEventArgs e)
        {
        }
        private void lb_track4_Click(object sender, EventArgs e)
        {
        }
        private void lb_crn4_Click(object sender, EventArgs e)
        {
        }
        private void rack14_Paint(object sender, PaintEventArgs e)
        {
        }
        private void rack13_Paint(object sender, PaintEventArgs e)
        {
        }
        private void rack12_Paint(object sender, PaintEventArgs e)
        {
        }
        private void rack11_Paint(object sender, PaintEventArgs e)
        {
        }
        private void lb_track5_Click(object sender, EventArgs e)
        {
        }
        private void lb_crn3_Click(object sender, EventArgs e)
        {
        }
        private void rack10_Paint(object sender, PaintEventArgs e)
        {
        }
        private void rack9_Paint(object sender, PaintEventArgs e)
        {
        }
        private void rack8_Paint(object sender, PaintEventArgs e)
        {
        }
        private void rack7_Paint(object sender, PaintEventArgs e)
        {
        }
        private void lb_crn2_Click(object sender, EventArgs e)
        {
        }
        private void lb_track2_Click(object sender, EventArgs e)
        {
        }
        private void rack6_Paint(object sender, PaintEventArgs e)
        {
        }
        private void rack5_Paint(object sender, PaintEventArgs e)
        {
        }
        private void rack4_Paint(object sender, PaintEventArgs e)
        {
        }
        private void stn002_Click(object sender, EventArgs e)
        {
        }
        private void stn005_Click(object sender, EventArgs e)
        {
        }
        private void lb_track1_Click(object sender, EventArgs e)
        {
        }
        private void lb_crn1_Click(object sender, EventArgs e)
        {
        }
        private void Form2_Load(object sender, EventArgs e)
        {
        }
        private void lb_trCart22_Click(object sender, EventArgs e)
        {
        }
        private void lb_track2_Click_1(object sender, EventArgs e)
        {
        }
        private void lb_crn4_Click_1(object sender, EventArgs e)
        {
        }
        private void lb_track4_Click_1(object sender, EventArgs e)
        {
        }
    }
}
version/STWCSMapEditor/WCS/Form2.resx
New file
@@ -0,0 +1,265 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="lb_crn4.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAAMoAAAA4CAYAAAC8P2e6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
        wwAADsMBx2+oZAAABudJREFUeF7tkw1yYykMhOfoe7S52e7aUceyXoN+ELE9w1elqofU3YBDfh0Oh8Ph
        cDgcDh/I79+///1bSq58OORhD+pPLbny4ZDnb3hE5x/lsMz5R/kCmpWSqMNPw/4YkRJ7iIrnk9C/y+6S
        LSlM31myzfvBDttREr+ULxEhKp5PQf8m0RJriohfa3aUbPN+sMN2lMSXHrDOYSWyJ2azTydzt5XfAd6Z
        fyV/xq7cNjoPiCxWIgkBvc1A3UWG2ezTydwN2pWSKEpEU2FXbhudB0SWztO9SknMHTa3JdI/CnbPnSXb
        UiKaCrty2+g8ILJsnu5nSyLusLlXYg3yz//63RWH3WdUWm+/GZjPNIyKJ8Ku3Da6D8jyvD2iHtYbkdE+
        YA+7u+JE7qA1o+8bWHeVxLaxK7eN7gOyPG+PqIf1RmS0D2oP2qeWG7mD1oy+b2DdVRLbxq7cNroPyPK8
        PaIe1huR0T6oPWifWm7kDloz+r6B9axEOiWjzbArt43uA7I8b4+oBz1dMrrgzTn6Qece9Zh6JrsDerb0
        zH7fsOsqXTmWXbltdB8QeaxEcoHNZz1dMrrgzTn6Mecf9hVk6IrD7oCeLT2z3zfsukpXjmVXbhs7DohM
        WzK+wOajnny65/bmHPuY84/7Abzw57PYHWY9PbM9VndzkhXvjF25bew+IPK7SmLdc3tzjn3M+cf9YD2L
        3WHWy5bYU6x4Z+zKbWP3AW0+1tWSGPfc3pzDHnP+gXflsDtEexatiehHrHhn7MptY/cBbX51v2yON+eM
        HnPmkXdkfMHuEO1ZtCaiH7HinVHKhSlTYk2z6vfQZ9Ql4zDW5+V4c87sMUceOjRMF/E/w+4Q7Vmg0SWj
        FCveGaVcmDIl1jSr/gj6nNX9rM/L8eYc7zGvzD3vFXaHaM8CjS4ZpVjNsH5bIouRMZU2UKz6M2Cvyn7W
        5+V4c07kMY806I/8sxmH3SHas0Q0EZCzq2SbGBlTaQPFqj8D9qrsZ31ejjfnRB+z1WE983rzK+wO0Z4F
        mncvOW6MjKm0gWLVnwF7VfazPi/Hm3Myjxk6eDxfRPMMu0O0Z4HmJ0u2Lv4tAmSCoV0tidvKyn7W5+V4
        c07mMUMb9UR1D9gdoj2L1uDb81Sx2dv2ygRDu1oSt5WV/azPy/HmnOxjzuiz2fwO0Z5Fa/DtearYbL1f
        pSTmiitQZLSMVX8E7KFLRmGsz8vx5pzKw8/q47A7RHsWrcG356nAsnWvUhJzxRUoMlrGqt8D+bZkHMb6
        vBxvzok+Zuh0eUR1D9gdoj2L1WC9s2Sr0PlKZIJXD7Hq97D51f2yOd6cE3nM0GhdxheH3SHas8x83SXx
        34z6y+hNoyXWNKt+D5uPdbUkxj23N+d4jxlzpol647A7zHqREsudUf9GRm/XQOtHmiXsBpESa4lV/wx7
        PqyrJTGXXIs358weM2azx+7NZvMr7A6zXqTE8o3uax16FquplsR9Ft2H1z9INdv6vLXFm3NGjxl976HP
        dBH/M+wOo558Ps2Z1sL0nufGyOfV3fw/dv0RdB4aWbZkHMb6dJYuGV/w5hz2mNGLPvKRPpPxBbsDerZk
        /OSxMwY0umTkMvPoWaTE9v6ww6+UxJaxOTpbl4wveHOOfcxY274H02cz+B3QsyXjJ4+dMaCJaBnMl8mL
        6t4GfbmOktgyNiebm9V/oR8zvnUvg/XkcyJ3sBq9tjMGNJ5uBPNm8jLat6DzwB1ZNiObmdV/oR8zvnOP
        +4H15rMid7Aavca3nlu0ZqUk7g7rzcjqX0r3YVfzrB/rbIk9CB6zrhV0Rj4vcger8dYWzFdL4kJntlQ8
        L2PHYVcyrRfrbIk9CB5z/lGPqWey+4xKLMPfTZYXMJ9pPLS3kgVP1vcSdh20mgufLRlTIpo5tQftU8vV
        946U9twDBNYDmM00M6xvJaPi/XF2HbT6I2ifLhlTIpo5tQftU8vV9x7djWluJeM7rAf0bKZjQK892Ywb
        Fc/L2H3Yn/gx1vfQD3pX1RjdDX1bMv4m0sc301m0VuvtOkLF8zJ2H9bLx7yjJLIAe9jdVWN0N9v3dHZm
        eyMd0HNotFb3o1Q8L2P3Yb18zDtKIv8oRnez/ZHuBmasRPLk132gZ0yn+1Eqnpex+7Befsf+HRnvyuhu
        tj/S3cCMlUi+YRpdIruj1zMdI6p7G3Yf2Mvv2L8j410Z3c32R7oqyPNK5N/MZiCieTt2H9jL79i/I+Nd
        wd1GJbL232AlD16WMeq/PbsP7eV37N+R8a7gbtES2zIsu6Mk/vPYfQEvv2P/jox35VV3w747Srb4LNhF
        dpRsd4FpT11Lfq7Dq2B/lB0l211g2lPXkp/rcDgcDofD4XDo59ev/wCH1gwMrIUxXgAAAABJRU5ErkJg
        gg==
</value>
  </data>
  <data name="lb_crn3.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAAMoAAAA4CAYAAAC8P2e6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
        wwAADsMBx2+oZAAABudJREFUeF7tkw1yYykMhOfoe7S52e7aUceyXoN+ELE9w1elqofU3YBDfh0Oh8Ph
        cDgcDh/I79+///1bSq58OORhD+pPLbny4ZDnb3hE5x/lsMz5R/kCmpWSqMNPw/4YkRJ7iIrnk9C/y+6S
        LSlM31myzfvBDttREr+ULxEhKp5PQf8m0RJriohfa3aUbPN+sMN2lMSXHrDOYSWyJ2azTydzt5XfAd6Z
        fyV/xq7cNjoPiCxWIgkBvc1A3UWG2ezTydwN2pWSKEpEU2FXbhudB0SWztO9SknMHTa3JdI/CnbPnSXb
        UiKaCrty2+g8ILJsnu5nSyLusLlXYg3yz//63RWH3WdUWm+/GZjPNIyKJ8Ku3Da6D8jyvD2iHtYbkdE+
        YA+7u+JE7qA1o+8bWHeVxLaxK7eN7gOyPG+PqIf1RmS0D2oP2qeWG7mD1oy+b2DdVRLbxq7cNroPyPK8
        PaIe1huR0T6oPWifWm7kDloz+r6B9axEOiWjzbArt43uA7I8b4+oBz1dMrrgzTn6Qece9Zh6JrsDerb0
        zH7fsOsqXTmWXbltdB8QeaxEcoHNZz1dMrrgzTn6Mecf9hVk6IrD7oCeLT2z3zfsukpXjmVXbhs7DohM
        WzK+wOajnny65/bmHPuY84/7Abzw57PYHWY9PbM9VndzkhXvjF25bew+IPK7SmLdc3tzjn3M+cf9YD2L
        3WHWy5bYU6x4Z+zKbWP3AW0+1tWSGPfc3pzDHnP+gXflsDtEexatiehHrHhn7MptY/cBbX51v2yON+eM
        HnPmkXdkfMHuEO1ZtCaiH7HinVHKhSlTYk2z6vfQZ9Ql4zDW5+V4c87sMUceOjRMF/E/w+4Q7Vmg0SWj
        FCveGaVcmDIl1jSr/gj6nNX9rM/L8eYc7zGvzD3vFXaHaM8CjS4ZpVjNsH5bIouRMZU2UKz6M2Cvyn7W
        5+V4c07kMY806I/8sxmH3SHas0Q0EZCzq2SbGBlTaQPFqj8D9qrsZ31ejjfnRB+z1WE983rzK+wO0Z4F
        mncvOW6MjKm0gWLVnwF7VfazPi/Hm3Myjxk6eDxfRPMMu0O0Z4HmJ0u2Lv4tAmSCoV0tidvKyn7W5+V4
        c07mMUMb9UR1D9gdoj2L1uDb81Sx2dv2ygRDu1oSt5WV/azPy/HmnOxjzuiz2fwO0Z5Fa/DtearYbL1f
        pSTmiitQZLSMVX8E7KFLRmGsz8vx5pzKw8/q47A7RHsWrcG356nAsnWvUhJzxRUoMlrGqt8D+bZkHMb6
        vBxvzok+Zuh0eUR1D9gdoj2L1WC9s2Sr0PlKZIJXD7Hq97D51f2yOd6cE3nM0GhdxheH3SHas8x83SXx
        34z6y+hNoyXWNKt+D5uPdbUkxj23N+d4jxlzpol647A7zHqREsudUf9GRm/XQOtHmiXsBpESa4lV/wx7
        PqyrJTGXXIs358weM2azx+7NZvMr7A6zXqTE8o3uax16FquplsR9Ft2H1z9INdv6vLXFm3NGjxl976HP
        dBH/M+wOo558Ps2Z1sL0nufGyOfV3fw/dv0RdB4aWbZkHMb6dJYuGV/w5hz2mNGLPvKRPpPxBbsDerZk
        /OSxMwY0umTkMvPoWaTE9v6ww6+UxJaxOTpbl4wveHOOfcxY274H02cz+B3QsyXjJ4+dMaCJaBnMl8mL
        6t4GfbmOktgyNiebm9V/oR8zvnUvg/XkcyJ3sBq9tjMGNJ5uBPNm8jLat6DzwB1ZNiObmdV/oR8zvnOP
        +4H15rMid7Aavca3nlu0ZqUk7g7rzcjqX0r3YVfzrB/rbIk9CB6zrhV0Rj4vcger8dYWzFdL4kJntlQ8
        L2PHYVcyrRfrbIk9CB5z/lGPqWey+4xKLMPfTZYXMJ9pPLS3kgVP1vcSdh20mgufLRlTIpo5tQftU8vV
        946U9twDBNYDmM00M6xvJaPi/XF2HbT6I2ifLhlTIpo5tQftU8vV9x7djWluJeM7rAf0bKZjQK892Ywb
        Fc/L2H3Yn/gx1vfQD3pX1RjdDX1bMv4m0sc301m0VuvtOkLF8zJ2H9bLx7yjJLIAe9jdVWN0N9v3dHZm
        eyMd0HNotFb3o1Q8L2P3Yb18zDtKIv8oRnez/ZHuBmasRPLk132gZ0yn+1Eqnpex+7Befsf+HRnvyuhu
        tj/S3cCMlUi+YRpdIruj1zMdI6p7G3Yf2Mvv2L8j410Z3c32R7oqyPNK5N/MZiCieTt2H9jL79i/I+Nd
        wd1GJbL232AlD16WMeq/PbsP7eV37N+R8a7gbtES2zIsu6Mk/vPYfQEvv2P/jox35VV3w747Srb4LNhF
        dpRsd4FpT11Lfq7Dq2B/lB0l211g2lPXkp/rcDgcDofD4XDo59ev/wCH1gwMrIUxXgAAAABJRU5ErkJg
        gg==
</value>
  </data>
  <data name="lb_crn2.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAAMoAAAA4CAYAAAC8P2e6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
        wwAADsMBx2+oZAAABudJREFUeF7tkw1yYykMhOfoe7S52e7aUceyXoN+ELE9w1elqofU3YBDfh0Oh8Ph
        cDgcDh/I79+///1bSq58OORhD+pPLbny4ZDnb3hE5x/lsMz5R/kCmpWSqMNPw/4YkRJ7iIrnk9C/y+6S
        LSlM31myzfvBDttREr+ULxEhKp5PQf8m0RJriohfa3aUbPN+sMN2lMSXHrDOYSWyJ2azTydzt5XfAd6Z
        fyV/xq7cNjoPiCxWIgkBvc1A3UWG2ezTydwN2pWSKEpEU2FXbhudB0SWztO9SknMHTa3JdI/CnbPnSXb
        UiKaCrty2+g8ILJsnu5nSyLusLlXYg3yz//63RWH3WdUWm+/GZjPNIyKJ8Ku3Da6D8jyvD2iHtYbkdE+
        YA+7u+JE7qA1o+8bWHeVxLaxK7eN7gOyPG+PqIf1RmS0D2oP2qeWG7mD1oy+b2DdVRLbxq7cNroPyPK8
        PaIe1huR0T6oPWifWm7kDloz+r6B9axEOiWjzbArt43uA7I8b4+oBz1dMrrgzTn6Qece9Zh6JrsDerb0
        zH7fsOsqXTmWXbltdB8QeaxEcoHNZz1dMrrgzTn6Mecf9hVk6IrD7oCeLT2z3zfsukpXjmVXbhs7DohM
        WzK+wOajnny65/bmHPuY84/7Abzw57PYHWY9PbM9VndzkhXvjF25bew+IPK7SmLdc3tzjn3M+cf9YD2L
        3WHWy5bYU6x4Z+zKbWP3AW0+1tWSGPfc3pzDHnP+gXflsDtEexatiehHrHhn7MptY/cBbX51v2yON+eM
        HnPmkXdkfMHuEO1ZtCaiH7HinVHKhSlTYk2z6vfQZ9Ql4zDW5+V4c87sMUceOjRMF/E/w+4Q7Vmg0SWj
        FCveGaVcmDIl1jSr/gj6nNX9rM/L8eYc7zGvzD3vFXaHaM8CjS4ZpVjNsH5bIouRMZU2UKz6M2Cvyn7W
        5+V4c07kMY806I/8sxmH3SHas0Q0EZCzq2SbGBlTaQPFqj8D9qrsZ31ejjfnRB+z1WE983rzK+wO0Z4F
        mncvOW6MjKm0gWLVnwF7VfazPi/Hm3Myjxk6eDxfRPMMu0O0Z4HmJ0u2Lv4tAmSCoV0tidvKyn7W5+V4
        c07mMUMb9UR1D9gdoj2L1uDb81Sx2dv2ygRDu1oSt5WV/azPy/HmnOxjzuiz2fwO0Z5Fa/DtearYbL1f
        pSTmiitQZLSMVX8E7KFLRmGsz8vx5pzKw8/q47A7RHsWrcG356nAsnWvUhJzxRUoMlrGqt8D+bZkHMb6
        vBxvzok+Zuh0eUR1D9gdoj2L1WC9s2Sr0PlKZIJXD7Hq97D51f2yOd6cE3nM0GhdxheH3SHas8x83SXx
        34z6y+hNoyXWNKt+D5uPdbUkxj23N+d4jxlzpol647A7zHqREsudUf9GRm/XQOtHmiXsBpESa4lV/wx7
        PqyrJTGXXIs358weM2azx+7NZvMr7A6zXqTE8o3uax16FquplsR9Ft2H1z9INdv6vLXFm3NGjxl976HP
        dBH/M+wOo558Ps2Z1sL0nufGyOfV3fw/dv0RdB4aWbZkHMb6dJYuGV/w5hz2mNGLPvKRPpPxBbsDerZk
        /OSxMwY0umTkMvPoWaTE9v6ww6+UxJaxOTpbl4wveHOOfcxY274H02cz+B3QsyXjJ4+dMaCJaBnMl8mL
        6t4GfbmOktgyNiebm9V/oR8zvnUvg/XkcyJ3sBq9tjMGNJ5uBPNm8jLat6DzwB1ZNiObmdV/oR8zvnOP
        +4H15rMid7Aavca3nlu0ZqUk7g7rzcjqX0r3YVfzrB/rbIk9CB6zrhV0Rj4vcger8dYWzFdL4kJntlQ8
        L2PHYVcyrRfrbIk9CB5z/lGPqWey+4xKLMPfTZYXMJ9pPLS3kgVP1vcSdh20mgufLRlTIpo5tQftU8vV
        946U9twDBNYDmM00M6xvJaPi/XF2HbT6I2ifLhlTIpo5tQftU8vV9x7djWluJeM7rAf0bKZjQK892Ywb
        Fc/L2H3Yn/gx1vfQD3pX1RjdDX1bMv4m0sc301m0VuvtOkLF8zJ2H9bLx7yjJLIAe9jdVWN0N9v3dHZm
        eyMd0HNotFb3o1Q8L2P3Yb18zDtKIv8oRnez/ZHuBmasRPLk132gZ0yn+1Eqnpex+7Befsf+HRnvyuhu
        tj/S3cCMlUi+YRpdIruj1zMdI6p7G3Yf2Mvv2L8j410Z3c32R7oqyPNK5N/MZiCieTt2H9jL79i/I+Nd
        wd1GJbL232AlD16WMeq/PbsP7eV37N+R8a7gbtES2zIsu6Mk/vPYfQEvv2P/jox35VV3w747Srb4LNhF
        dpRsd4FpT11Lfq7Dq2B/lB0l211g2lPXkp/rcDgcDofD4XDo59ev/wCH1gwMrIUxXgAAAABJRU5ErkJg
        gg==
</value>
  </data>
  <data name="lb_crn1.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        iVBORw0KGgoAAAANSUhEUgAAAMoAAAA4CAYAAAC8P2e6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
        wwAADsMBx2+oZAAABudJREFUeF7tkw1yYykMhOfoe7S52e7aUceyXoN+ELE9w1elqofU3YBDfh0Oh8Ph
        cDgcDh/I79+///1bSq58OORhD+pPLbny4ZDnb3hE5x/lsMz5R/kCmpWSqMNPw/4YkRJ7iIrnk9C/y+6S
        LSlM31myzfvBDttREr+ULxEhKp5PQf8m0RJriohfa3aUbPN+sMN2lMSXHrDOYSWyJ2azTydzt5XfAd6Z
        fyV/xq7cNjoPiCxWIgkBvc1A3UWG2ezTydwN2pWSKEpEU2FXbhudB0SWztO9SknMHTa3JdI/CnbPnSXb
        UiKaCrty2+g8ILJsnu5nSyLusLlXYg3yz//63RWH3WdUWm+/GZjPNIyKJ8Ku3Da6D8jyvD2iHtYbkdE+
        YA+7u+JE7qA1o+8bWHeVxLaxK7eN7gOyPG+PqIf1RmS0D2oP2qeWG7mD1oy+b2DdVRLbxq7cNroPyPK8
        PaIe1huR0T6oPWifWm7kDloz+r6B9axEOiWjzbArt43uA7I8b4+oBz1dMrrgzTn6Qece9Zh6JrsDerb0
        zH7fsOsqXTmWXbltdB8QeaxEcoHNZz1dMrrgzTn6Mecf9hVk6IrD7oCeLT2z3zfsukpXjmVXbhs7DohM
        WzK+wOajnny65/bmHPuY84/7Abzw57PYHWY9PbM9VndzkhXvjF25bew+IPK7SmLdc3tzjn3M+cf9YD2L
        3WHWy5bYU6x4Z+zKbWP3AW0+1tWSGPfc3pzDHnP+gXflsDtEexatiehHrHhn7MptY/cBbX51v2yON+eM
        HnPmkXdkfMHuEO1ZtCaiH7HinVHKhSlTYk2z6vfQZ9Ql4zDW5+V4c87sMUceOjRMF/E/w+4Q7Vmg0SWj
        FCveGaVcmDIl1jSr/gj6nNX9rM/L8eYc7zGvzD3vFXaHaM8CjS4ZpVjNsH5bIouRMZU2UKz6M2Cvyn7W
        5+V4c07kMY806I/8sxmH3SHas0Q0EZCzq2SbGBlTaQPFqj8D9qrsZ31ejjfnRB+z1WE983rzK+wO0Z4F
        mncvOW6MjKm0gWLVnwF7VfazPi/Hm3Myjxk6eDxfRPMMu0O0Z4HmJ0u2Lv4tAmSCoV0tidvKyn7W5+V4
        c07mMUMb9UR1D9gdoj2L1uDb81Sx2dv2ygRDu1oSt5WV/azPy/HmnOxjzuiz2fwO0Z5Fa/DtearYbL1f
        pSTmiitQZLSMVX8E7KFLRmGsz8vx5pzKw8/q47A7RHsWrcG356nAsnWvUhJzxRUoMlrGqt8D+bZkHMb6
        vBxvzok+Zuh0eUR1D9gdoj2L1WC9s2Sr0PlKZIJXD7Hq97D51f2yOd6cE3nM0GhdxheH3SHas8x83SXx
        34z6y+hNoyXWNKt+D5uPdbUkxj23N+d4jxlzpol647A7zHqREsudUf9GRm/XQOtHmiXsBpESa4lV/wx7
        PqyrJTGXXIs358weM2azx+7NZvMr7A6zXqTE8o3uax16FquplsR9Ft2H1z9INdv6vLXFm3NGjxl976HP
        dBH/M+wOo558Ps2Z1sL0nufGyOfV3fw/dv0RdB4aWbZkHMb6dJYuGV/w5hz2mNGLPvKRPpPxBbsDerZk
        /OSxMwY0umTkMvPoWaTE9v6ww6+UxJaxOTpbl4wveHOOfcxY274H02cz+B3QsyXjJ4+dMaCJaBnMl8mL
        6t4GfbmOktgyNiebm9V/oR8zvnUvg/XkcyJ3sBq9tjMGNJ5uBPNm8jLat6DzwB1ZNiObmdV/oR8zvnOP
        +4H15rMid7Aavca3nlu0ZqUk7g7rzcjqX0r3YVfzrB/rbIk9CB6zrhV0Rj4vcger8dYWzFdL4kJntlQ8
        L2PHYVcyrRfrbIk9CB5z/lGPqWey+4xKLMPfTZYXMJ9pPLS3kgVP1vcSdh20mgufLRlTIpo5tQftU8vV
        946U9twDBNYDmM00M6xvJaPi/XF2HbT6I2ifLhlTIpo5tQftU8vV9x7djWluJeM7rAf0bKZjQK892Ywb
        Fc/L2H3Yn/gx1vfQD3pX1RjdDX1bMv4m0sc301m0VuvtOkLF8zJ2H9bLx7yjJLIAe9jdVWN0N9v3dHZm
        eyMd0HNotFb3o1Q8L2P3Yb18zDtKIv8oRnez/ZHuBmasRPLk132gZ0yn+1Eqnpex+7Befsf+HRnvyuhu
        tj/S3cCMlUi+YRpdIruj1zMdI6p7G3Yf2Mvv2L8j410Z3c32R7oqyPNK5N/MZiCieTt2H9jL79i/I+Nd
        wd1GJbL232AlD16WMeq/PbsP7eV37N+R8a7gbtES2zIsu6Mk/vPYfQEvv2P/jox35VV3w747Srb4LNhF
        dpRsd4FpT11Lfq7Dq2B/lB0l211g2lPXkp/rcDgcDofD4XDo59ev/wCH1gwMrIUxXgAAAABJRU5ErkJg
        gg==
</value>
  </data>
</root>
version/STWCSMapEditor/WCS/Form3.Designer.cs
New file
@@ -0,0 +1,38 @@
namespace WCS
{
    partial class Form3
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Text = "Form3";
        }
        #endregion
    }
}
version/STWCSMapEditor/WCS/Form3.cs
New file
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WCS
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
    }
}
version/STWCSMapEditor/WCS/Form3.resx
New file
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>
version/STWCSMapEditor/WCS/Form4.Designer.cs
New file
@@ -0,0 +1,49 @@
namespace WCS
{
    partial class Form4
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.SuspendLayout();
            //
            // Form4
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(1325, 753);
            this.Name = "Form4";
            this.Text = "Form4";
            this.ResumeLayout(false);
        }
        #endregion
    }
}
version/STWCSMapEditor/WCS/Form4.cs
New file
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WCS
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();
        }
    }
}
version/STWCSMapEditor/WCS/Form4.resx
New file
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
</root>
version/STWCSMapEditor/WCS/HttpPostHelper.cs
New file
@@ -0,0 +1,147 @@
using System;
using System.Collections.Specialized;
using System.IO;
using System.Net;
using System.Reflection;
using System.Text;
namespace WCS
{
    public class HttpPostHelper
    {
        public static string Post(string url, string postData)
        {
            return Post(url, postData, "application/x-www-form-urlencoded");
        }
        public static string Post(string url, string postData, string contentType)
        {
            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
            request.ContentType = contentType;
            request.Method = "POST";
            request.Timeout = 300000;
            byte[] bytes = Encoding.UTF8.GetBytes(postData);
            request.ContentLength = bytes.Length;
            Stream writer = request.GetRequestStream();
            writer.Write(bytes, 0, bytes.Length);
            writer.Close();
            HttpWebResponse response = (HttpWebResponse) request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string result = reader.ReadToEnd();
            response.Close();
            return result;
        }
        public static string Post(string url, string postData, string userName, string password)
        {
            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
            request.ContentType = "text/html; charset=UTF-8";
            request.Method = "POST";
            string usernamePassword = userName + ":" + password;
            CredentialCache credentialCache =
                new CredentialCache {{new Uri(url), "Basic", new NetworkCredential(userName, password)}};
            request.Credentials = credentialCache;
            request.Headers.Add("Authorization",
                "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));
            byte[] bytes = Encoding.UTF8.GetBytes(postData);
            request.ContentLength = bytes.Length;
            Stream writer = request.GetRequestStream();
            writer.Write(bytes, 0, bytes.Length);
            writer.Close();
            HttpWebResponse response = (HttpWebResponse) request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII);
            string result = reader.ReadToEnd();
            response.Close();
            return result;
        }
        //static CookieContainer cookie = new CookieContainer();
        /// <summary>
        ///
        /// </summary>
        /// <param name="url">请求的servlet地址,不带参数</param>
        /// <param name="postData"></param>
        /// <returns>请求的参数,key=value&key1=value1</returns>
        public static string doHttpPost(string url, string postData)
        {
            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
            SetHeaderValue(request.Headers, "Content-Type", "application/json");
            SetHeaderValue(request.Headers, "Accept", "application/json");
            SetHeaderValue(request.Headers, "Accept-Charset", "utf-8");
            request.Method = "POST";
            request.Timeout = 5000;
            byte[] bytes = Encoding.UTF8.GetBytes(postData);
            request.ContentLength = bytes.Length;
            Stream writer = request.GetRequestStream();
            writer.Write(bytes, 0, bytes.Length);
            writer.Close();
            HttpWebResponse response = (HttpWebResponse) request.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string result = reader.ReadToEnd();
            response.Close();
            return result;
        }
        /// <summary>
        /// å¶å‘性超时时试看看
        /// </summary>
        /// <param name="url"></param>
        /// <param name="postData"></param>
        /// <returns></returns>
        public static string HttpPostForTimeOut(string url, string postData)
        {
            //System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
            //watch.Start();
            GC.Collect();
            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
            request.Method = "POST";
            request.ContentType = "application/json";
            //request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr);
            //int a = Encoding.UTF8.GetByteCount(postData);
            request.Timeout = 20 * 600 * 1000;
            ServicePointManager.Expect100Continue = false;
            ServicePointManager.DefaultConnectionLimit = 200;
            request.KeepAlive = false;
            request.ProtocolVersion = HttpVersion.Version10;
            Stream myRequestStream = request.GetRequestStream();
            StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("utf-8")); //如果JSON有中文则是UTF-8
            myStreamWriter.Write(postData);
            myStreamWriter.Close(); //请求中止,是因为长度不够,还没写完就关闭了.
            HttpWebResponse response = (HttpWebResponse) request.GetResponse();
            //watch.Stop();  //停止监视
            //TimeSpan timespan = watch.Elapsed;  //获取当前实例测量得出的总时间
            //System.Diagnostics.Debug.WriteLine("打开窗口代码执行时间:{0}(毫秒)", timespan.TotalMinutes);  //总毫秒数
            Stream myResponseStream = response.GetResponseStream();
            StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
            string registerResult = myStreamReader.ReadToEnd();
            myStreamReader.Close();
            myResponseStream.Close();
            return registerResult;
        }
        public static void SetHeaderValue(WebHeaderCollection header, string name, string value)
        {
            var property = typeof(WebHeaderCollection).GetProperty("InnerCollection", BindingFlags.Instance | BindingFlags.NonPublic);
            if (property != null)
            {
                var collection = property.GetValue(header, null) as NameValueCollection;
                collection[name] = value;
            }
        }
    }
}
version/STWCSMapEditor/WCS/LedThread.cs
New file
@@ -0,0 +1,3592 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using DevComponents.DotNetBar;
using System.Runtime.InteropServices;
using System.IO;
namespace WCS
{
    /// <summary>
    /// LED线程
    /// </summary>
    class LedThread
    {
        #region åˆå§‹åŒ–屏幕使用相关接口
        //指定五代控制器
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_Bx5G(uint* Bx5g);
        //指定六代控制器
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_Bx6G(uint* Bx6g);
        //创建客户端,适用于固定IP通讯
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxScreenClient(uint* screen);
        //创建客户端,适用于固定IP通讯
        //screenname - å±å¹•名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxScreenClient2(uint* screen, string screenname);
        //创建客户端,适用于固定IP通讯
        // screenname - å±å¹•名称
        // Bx - æŒ‡å®šBx系列,可以是Bx5g或者Bx6g
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxScreenClient3(uint* screen, string screenname, uint Bx);
        //创建客户端,适用于串口通讯
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxScreenRS(uint* screen);
        //创建客户端,适用于串口通讯
        // screenname - å±å¹•名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxScreenRS2(uint* screen, string screenname);
        //创建客户端,适用于服务器模式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxServer(uint* server);
        //创建客户端,适用于服务器模式
        // aliasname - åç§°
        // port - ç«¯å£å·
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxServer2(uint* server, string alisaname, ushort port);
        //创建客户端,适用于服务器模式
        // aliasname - åç§°
        // port - ç«¯å£å·
        // Bx - æŒ‡å®šæŽ§åˆ¶ç±»åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxServer3(uint* server, string aliasname, ushort port, uint Bx);
        //创建监听
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxServerListener(uint* listener);
        //设置8位访问密码
        // password - 8位访问密码
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ServerSetting_setAccessPassword(uint server, string password);
        //设置12位自定义ID
        // customid - è‡ªå®šä¹‰ID
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ServerSetting_setCustomID(uint server, string custonid);
        //设置心跳时间间隔
        // time - å¿ƒè·³æ—¶é—´é—´éš”
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ServerSetting_setHeartBeatInterval(uint server, ushort time);
        //设置IP
        // ip - IP
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ServerSetting_setIP(uint server, byte* ip);
        //设置模式
        // mode - æ¨¡å¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ServerSetting_setMode(uint server, byte mode);
        //设置端口
        // port - ç«¯å£
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ServerSetting_setPort(uint server, ushort port);
        //创建连接相关接口
        // ledip - æŽ§åˆ¶å™¨IP地址
        // ledport - æŽ§åˆ¶å™¨ç«¯å£å· 5005
        // result - æ˜¯å¦ä¸ºtcp通讯,true - tcp  false - udp
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenClient_connect(uint screen, string ledip, int ledport, bool result);
        //取得控制器IP地址
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenClient_getAddress(uint* ledip, uint screen);
        //取得控制器端口号
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenClient_getPort(int* ledport, uint screen);
        //取得当前屏幕规格。屏幕规格在连线成功后自动从控制器上获取,若控制器未加载屏参时回复 NULL。
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_getProfile(uint* profile, uint screen);
        // comport - ä¸²å£å· ä¾‹å¦‚:COM1
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenRS_connect(uint screen, string comport);
        // conport - ä¸²å£å· ä¾‹å¦‚:COM1
        // baudrate - æ³¢ç‰¹çއ ä¾‹å¦‚: 9600 ,57600
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenRS_connect2(uint screen, string comport, int baudrate);
        //取得波特率
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenRS_getBaudrate(int* baudrate, uint screen);
        //取得串口号
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenRS_getComPort(uint* comport, uint screen);
        //节目相关接口
        //创建节目
        // programid - èŠ‚ç›®ç¼–å·ç»„ï¼Œ0-999
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ProgramBxFile(uint* program, int programid, uint screenprofile);
        //创建节目
        // programname - èŠ‚ç›®åç§°ï¼Œé•¿åº¦ä¸ºå››ï¼Œç¬¬ä¸€ç ä¸ºP,后三位为数字,例如P001
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ProgramBxFile2(uint* program, string programname, uint screenprofile);
        //创建节目
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ProgramDataBxFile(uint* programdata, string programname, uint srceenprofile);
        //创建节目
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ProgramDataBxFile2(uint* programdata, string progamname, uint screenprofile, int programid);
        //锁定节目
        // programname - èŠ‚ç›®åç§°
        // locked - æ˜¯å¦é”å®š true ï¼š é”å®š  false è§£é”
        // lockduration - é”å®šæ—¶é—´ ä»¥s为单位
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ProgramLockCmd(uint* programlock, string programname, bool locked, uint lockduration);
        //锁定节目
        // programname - èŠ‚ç›®åç§°
        // locked - æ˜¯å¦é”å®š true: é”å®š  false è§£é”
        // lockduration - é”å®šæ—¶é—´ ä»¥s为单位
        // nonvolatile - æŽ‰ç”µä¿å­˜æ–¹å¼ 0X00:掉电不保存  0X01:掉电保存
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ProgramLockCmd2(uint* programlock, string progamname, bool locked, uint lockduration, byte nonvolatile);
        //节目播放的星期属性
        // mon -biy1到bit7依次代表周一到周日
        [DllImport("onbon.apo.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ProgramWeek(uint* programweek, byte mon);
        //节目中添加区域
        // area - åŒºåŸŸ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_addArea(uint program, uint area);
        //增加节目播放时间段
        // starthour - å¼€å§‹æ’­æ”¾å°æ—¶
        // startminute - å¼€å§‹æ’­æ”¾åˆ†é’Ÿ
        // startsecond - å¼€å§‹æ’­æ”¾ç§’
        // endhour - ç»“束播放小时
        // endminute - ç»“束播放分钟
        // endsecond - ç»“束播放秒
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_addPlayPeriodSetting(uint program, byte strathour, byte startminute, byte startsecond, byte endhour, byte endminute, byte endsecond);
        //取得区域总数
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getAreaCount(int* areacount, uint program);
        //取得播放结束日
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getEndDay(int* endday, uint program);
        //取得结束播放月
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getEndMonth(int* endmonth, uint program);
        //取得结束播放年
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgamBxFile_getEndYear(int* endyear, uint program);
        //取得文件名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getFileName(uint program);
        //取得边框
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getFrame(uint* frame, uint program);
        //取得节目等级 0:一般  1: ä¼˜å…ˆ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getPriority(byte* programpriority, uint program);
        //取得播放重复次数
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getProgramPlayTimes(int* times, uint progam);
        //取得节目播放时间长度,单位为s,当控制器上有多个节目时,会根据此设定控制节目被播放的时间长,当控制器上只有一个节目时,此设定没有效果。控制节目播放有效时间,可以利用addPlayPeriosSetting规划
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getProgramTimeSpan(int* timespan, uint program);
        //取得播放周设定
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getProgramWeek(uint* week, uint program);
        //取得开始播放日
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getStartDay(int* startday, uint program);
        //取得开始播放月
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getStartMonth(int* startmonth, uint program);
        //取得开始播放年
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_getStartYear(int* startyear, uint program);
        //设定结束播放日
        // endday - ç»“束播放日
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setEndDay(uint program, byte endday);
        //设定结束播放月份
        // endmonth - ç»“束播放月份
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setEndMonth(uint program, byte endmonth);
        //设定结束播放年
        // endyear - ç»“束播放年
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setEndYear(uint program, ushort endyear);
        //设定节目等级
        // priority - èŠ‚ç›®ç­‰çº§ 0: ä¸€èˆ¬  1: ä¼˜å…ˆ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setPriority(uint program, byte priority);
        //设定重复播放次数
        // programplaytiesm - é‡å¤æ’­æ”¾æ¬¡æ•°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setProgramPlayTimes(uint program, int programplaytimes);
        //设定节目播放时间长度,单位为s,0:循环播放。当控制器上有多个节目时,会根据此设定控制节目被播放的时间长
        //当控制器上只有一个节目时,此设定无效。
        //控制器节目播放有效时间,可利用addPlayPeriosSetting规划
        // programtimespan - èŠ‚ç›®æ’­æ”¾æ—¶é—´é•¿åº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setProgramTimeSpan(uint program, int programtimespan);
        //设置播放周
        // programweek - æ’­æ”¾å‘¨ åœ¨æŽ¥å£Create_ProgramWeek中创建
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setProgramWeek(uint program, uint programweek);
        //设定开始播放日
        // startday - å¼€å§‹æ’­æ”¾æ—¥
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setStartDay(uint program, byte startday);
        //设定开始播放月份
        // startmonth - å¼€å§‹æ’­æ”¾æœˆä»½
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setStartMonth(uint program, byte startmonth);
        //设定开始播放年
        // startyear - å¼€å§‹æ’­æ”¾å¹´
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramBxFile_setStartYear(uint program, ushort startyear);
        //取得当前偏移量
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramDataBxFile_getCurrentOffset(int* currentoffset, uint programdata);
        //取得文件名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramDataBxFile_getFileName(uint programdata);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramDataBxFile_reset(uint programdata, int reset);
        //全周播放
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramWeek_All(uint program);
        //全周取消播放
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ProgramWeek_Off(uint program);
        //区域相关接口
        //创建图文区域
        // x - x坐标
        // y - y坐标
        // width - åŒºåŸŸå®½åº¦
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextCaptionBxArea(uint* textarea, int x, int y, int width, int heigth, uint screenprofile);
        //取得图文区透明度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextCaptionBxArea_getTransparency(uint* transparency, uint textarea);
        //是否显示背景
        // isbackgroundflag - èƒŒæ™¯æ˜¯å¦æ˜¾ç¤º true: æ˜¾ç¤º  flase :不显示
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextCaptionBxArea_isBackgroundFlag(bool* isbackgroundflag, uint textarea);
        //显示被背景遮罩的部分
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextCaptionBxArea_maskByBackground(uint textarea);
        //与背景重叠显示
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextCaptionBxArea_overlayWithBackfround(uint textarea);
        //设定是否显示背景
        // isbackgroundflag - æ˜¯å¦æ˜¾ç¤ºèƒŒæ™¯ true:显示 flase ï¼šä¸æ˜¾ç¤º
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextCaptionBxArea_setBackgroundFlag(uint textarea, bool isbackgroundflag);
        //设定透明度
        // transparency - é€æ˜Žåº¦ å½“该值大于等于0(不透明)小于等于100(全透明)时,以该北京区域为基准
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextCaptionBxArea_setTransparency(uint textarea, int transparency);
        //增加图片
        // filepath - å›¾ç‰‡çš„路径和图片名称 ä¾‹å¦‚:"D:/a/图片.bmp"
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTextCaptionBxArea_addImageFile(uint* imagefile, uint textarea, string filepath);
        //加入页面
        // page - é¡µé¢
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTextCaptionBxArea_addPage(uint area, uint page);
        //增加文字内容
        // text - æ–‡å­—内容
        // font - å­—åž‹
        // foreground - æ–‡å­—颜色
        // background - èƒŒæ™¯é¢œè‰²
        // style - å›¾æ–‡åŒºé¡µé¢æ’­æ”¾æ ·å¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTextCaptionBxArea_addText(uint* addedtext, uint textarea, string text, uint font, uint foreground, uint background, uint style);
        //增加文本
        // filepath - çº¯æ–‡å­—文档
        // font - å­—åž‹
        // foreground - æ–‡å­—颜色
        // background - èƒŒæ™¯é¢œè‰²
        // style - å›¾æ–‡åŒºé¡µé¢æ’­æ”¾æ ·å¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTextCaptionBxArea_addTextFile(uint* addedtextfile, uint textarea, string filepath, uint font, uint foreground, uint background, uint style);
        // æ¸…除所有页面
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTextCaptionBxArea_clearPages(uint textarea);
        //创建区域
        // x - x坐标
        // y - y坐标
        // width - åŒºåŸŸå®½åº¦
        // heigth - åŒºåŸŸé«˜åº¦
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxArea(uint* area, int x, int y, int width, int heigth, uint screenprofile);
        //取得字型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxArea_getFont(uint* font, uint area);
        //取得边框
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxArea_getFrame(uint* frame, uint area);
        //取得高度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxArea_getHeigth(ushort* heigth, uint area);
        //取得屏幕规格
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxArea_getScreenProfile(uint* screenprofile, uint area);
        //取得屏幕宽度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxArea_getWidth(ushort* width, uint area);
        //取得X坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxArea_getX(ushort* X, uint area);
        //取得Y坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxArea_getY(ushort* Y, uint area);
        //设定字型
        // font - å­—åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxArea_setFont(uint area, uint font);
        //
        //
        //
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxArea_validate(bool* validate, uint area, int p1, int p2, int p3);
        //创建时间区
        // x - x坐标
        // y - y坐标
        // width - æ—¶é—´åŒºå®½åº¦
        // heigth - æ—¶é—´åŒºé«˜åº¦
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DateTimeBxArea(uint* datetimearea, int x, int y, int width, int heigth, uint profile);
        //创建时间区
        // x - x坐标
        // y - y坐标
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DateTimeBxArea2(uint* datetimearea, int x, int y, uint profile);
        //创建天单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DayBxUnit(uint* dayunit, int x, int y, uint profile);
        //创建天单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        // mode - æ˜¾ç¤ºå†…容类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DayBxUnit2(uint* dayunit, int x, int y, uint profile, int mode);
        //取得显示类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DayBxUnit_getMode(int* mode, uint dayunit);
        //设定显示类型
        // mode - æ˜¾ç¤ºç±»åž‹ 0: æ•°å­— 1 - 30。 1: å†œåŽ†åˆä¸€ ~ ä¸‰å
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DayBxUnit_setMode(uint dayunit, int mode);
        //创建月单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_MonthBxUnit(uint* monthunit, int x, int y, uint profile);
        //创建月单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        // mode - æ˜¾ç¤ºå†…容类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_MonthBxUnit2(uint* monthunit, int x, int y, uint profile, int mode);
        //取得显示类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int MonthBxUnit_getMode(int* mode, uint monthunit);
        //设定显示类型
        // mode - æ˜¾ç¤ºç±»åž‹ 0: æ•°å­—。01 ~12。 1: æ–‡å­—。一月 ~ åäºŒæœˆã€‚ 2: å†œåŽ†æœˆã€‚æ­£æœˆ ~ è…Šæœˆã€‚
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int MonthBxUnit_setMode(uint monthunit, int mode);
        //创建年单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_YearBxUnit(uint* yearunit, int x, int y, uint profile);
        //创建年单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        // mode - æ˜¾ç¤ºå†…容类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_YearBxUnit2(uint* yearunit, int x, int y, uint profile, int mode);
        //取得显示类型
        [DllImport("onbon.apo.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int YearBxUnit_getMode(int* mode, uint yearunit);
        //设定显示类型
        // mode - æ˜¾ç¤ºç±»åž‹ 0;四位西元年 1:两位西元年 2:天干地支 3:十二生肖
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int YearBxUnit_setMode(uint yearunit, int mode);
        //创建时单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_HourBxUnit(uint* hourunit, int x, int y, uint profile);
        //创建时单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        // mode - æ˜¾ç¤ºå†…容类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_HourBxUnit2(uint* hourunit, int x, int y, uint profile, int mode);
        //取得显示类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int HourBxUnit_getMode(int* mode, uint hourunit);
        //设定显示类型
        // mode - æ˜¾ç¤ºç±»åž‹ 0 : 24 å°æ—¶åˆ¶ã€‚ 1 : 12 å°æ—¶åˆ¶ã€‚
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int HourBxUnit_setMode(uint hourunit, int mode);
        //创建分单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_MinuteBxUnit(uint* minuteunit, int x, int y, uint profile);
        //创建秒单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_SecondBxUnit(uint* secondunit, int x, int y, uint profile);
        //创建周单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_WeekBxUnit(uint* weekunit, int x, int y, uint profile);
        //创建周单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        // abbreviate - æ˜¯å¦é€‚用英文缩写
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_WeekBxUnit2(uint* weekunit, int x, int y, uint profile, bool abbreviate);
        //创建周单元
        // x - x坐标
        // y - y坐标
        // profile - å±å¹•è§„æ ¼
        // lang - æ˜¾ç¤ºè¯­è¨€
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_WeekBxUnit3(uint* weekunit, int x, int y, uint profile, int lang);
        //取得显示语言
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int WeekBxUnit_getLang(int* lang, uint weekunit);
        //设定显示语言
        // lang - æ˜¾ç¤ºè¯­è¨€ 0:中文上午下午 1: è‹±æ–‡AM/PM
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int WeekBxUnit_setLang(uint weekunit, int lang);
        //取得日期显示格式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_getDateStyle(int* datestyle, uint datetimearea);
        //取得颜色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_getForeground(uint* foreground, uint datetimearea);
        //取得时间显示格式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_getTimeStyle(int* timestyle, uint datetimearea);
        //取得周显示格式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_getWeekStyle(int* weekstyle, uint datetimearea);
        //是否多行显示
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_isMultiline(bool* ismultiline, uint datetimearea);
        //设定日期显示格式  NULL表示不显示日期
        // datestyle - æ—¥æœŸæ˜¾ç¤ºæ ¼å¼ NULL è¡¨ç¤ºä¸æ˜¾ç¤ºæ—¥æœŸã€‚ 0 - å†œåކ 1 - æ—¥æœŸæ ¼å¼ï¼šMM - DD 2 - æ—¥æœŸæ ¼å¼ï¼šMM / DD 3 - æ—¥æœŸæ ¼å¼ï¼šMM月DD日 4 - æ—¥æœŸæ ¼å¼ï¼šYYYY - MM - DD 5 - æ—¥æœŸæ ¼å¼ï¼šYYYY / MM / DD 6 - æ—¥æœŸæ ¼å¼ï¼šYYYYå¹´MM月DD日
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_setDateStyle(uint datetimearea, int datestyle);
        //设定字型
        // font - å­—åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_setFont(uint datetimearea, uint font);
        //设定颜色
        // foreground - é¢œè‰²
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_setForeground(uint datetimearea, uint foreground);
        //设定是否多行显示
        // multiline - å¤šè¡Œæ˜¾ç¤º
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_setMultiline(uint datetimearea, bool multiline);
        //设置时间显示格式  NULL表示不显示时间
        // timestyle - æ—¶é—´æ˜¾ç¤ºæ ¼å¼ NULL è¡¨ç¤ºä¸æ˜¾ç¤ºæ—¶é—´ã€‚ 0 - æ—¶é—´æ ¼å¼ï¼šAMPM HH:MM 1 - æ—¶é—´æ ¼å¼ï¼šHH:MM 2 - æ—¶é—´æ ¼å¼ï¼šHH时MM分 3 - æ—¶é—´æ ¼å¼ï¼šHH:MM AMPM 4 - æ—¶é—´æ ¼å¼ï¼šHH:MM:SS 5 - æ—¶é—´æ ¼å¼ï¼šHH时MM分SS秒
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_setTimeStyle(uint datetimearea, int timestyle);
        //设置想起显示格式  NULL表示不显示星期
        // weekstyle - æ˜ŸæœŸæ˜¾ç¤ºæ ¼å¼ NULL è¡¨ç¤ºä¸æ˜¾ç¤ºæ—¶é—´ã€‚ 0: æ˜ŸæœŸæ ¼å¼ï¼šä¸­æ–‡ã€‚ 1: æ˜ŸæœŸæ ¼å¼ï¼šè‹±æ–‡ç¼©å†™ã€‚ 2: æ˜ŸæœŸæ ¼å¼ï¼šè‹±æ–‡ã€‚
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_setWeekStyle(uint datetimearea, int weekstyle);
        //
        //
        //
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DateTimeBxArea_validate(bool* validate, uint area, int p1, int p2, int p3);
        //创建时钟区
        // x - x坐标
        // y - y坐标
        // widt - å®½åº¦
        // heigth - é«˜åº¦
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ClockBxArea(uint* clockarea, int x, int y, int width, int heigth, uint screenprofile);
        //创建上午下午单元
        // x - x坐标
        // y - y坐标
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_AmPmBxUnit(uint* ampmunit, int x, int y, uint screenprofile);
        //创建上午下午单元
        // x - x åæ ‡
        // y - y坐标
        // screenprofile - å±å¹•è§„æ ¼
        // lang - æ˜¾ç¤ºè¯­è¨€ 0 : ä¸­æ–‡ä¸Šä¸‹åˆã€‚1 : è‹±æ–‡ AM/PM。
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_AmPmBxUnit2(uint* ampmunit, int x, int y, uint screenprofiel, int lang);
        //取得显示语言
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AmPmBxUnit_getLang(int* lang, uint unit);
        //设定显示语言
        // lang - æ˜¾ç¤ºè¯­è¨€ 0 : ä¸­æ–‡ä¸Šä¸‹åˆã€‚1 : è‹±æ–‡ AM/PM
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AmPmBxUnit_setLang(uint unit, int lang);
        //创建模拟时钟单元
        // x - x坐标
        // y - y坐标
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_AnalogClockBxUnit(uint* analogclockunit, int x, int y, uint screenprofile);
        //设定时钟的大小
        // size - æ—¶é’Ÿçš„大小
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AnalogClockBxUnit_setupSize(uint analogclockunit, ushort size);
        //取得开始年
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getBattleStartYear(ushort* year, uint area);
        //取得开始月
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getBattleStartMonth(byte* month, uint area);
        //取得开始日
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getBattleStartDay(byte* day, uint area);
        //取得开始时
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getBattleStartHour(byte* hour, uint area);
        //取得开始分
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getBattleStartMinute(byte* minute, uint area);
        //取得开始秒
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getBattleStartSecond(byte* second, uint area);
        //取得开始周
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getBattleStartWeek(byte* week, uint area);
        //取得启动类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getBattleStartupMode(byte* mode, uint area);
        //取得时间差
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getTimeDifferent(ushort* timedifferent, uint area);
        //取得透明度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_getTransparency(byte* transparency, uint area);
        //是否显示背景
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_isBackgroundFlag(bool* isbackground, uint area);
        //显示背景遮罩的部分
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_maskByBackground(uint area);
        //与背景重叠显示
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_overlayWithBackground(uint area);
        //设定是否显示背景背景
        // isbackgroundflag - æ˜¯å¦æ˜¾ç¤ºèƒŒæ™¯
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setBackgroundFlag(uint area, bool isbackgroundflag);
        //设定开始年
        // year - å¼€å§‹å¹´
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setBattleStartYear(uint area, ushort year);
        //设定开始月
        // month - å¼€å§‹æœˆ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setBattleStartMonth(uint area, byte month);
        //设定开始日
        // day - å¼€å§‹æ—¥
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setBattleStartDay(uint area, byte day);
        //设定开始时
        // hour - å¼€å§‹æ—¶
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setBattleStartHour(uint area, byte hour);
        //设定开始分
        // minute - å¼€å§‹åˆ†
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setBattleStartMinute(uint area, byte minute);
        //设定开始秒
        // second - å¼€å§‹ç§’
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setBattleStartSecond(uint area, byte second);
        //设定开始周
        // week - å¼€å§‹å‘¨
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setBattleStartWeek(uint area, byte week);
        //设定启动类型
        // mode - å¯åŠ¨ç±»åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setBattleStartupMode(uint area, byte mode);
        //设定时间差
        // timedifferent - æ—¶é—´å·®
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setTimeDifferent(uint area, ushort timedifferent);
        //设定透明度  å½“该值大于等于0小于等于100时,以该背景区域为基准
        // transparency - é€æ˜Žåº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int AbstractTimeClockBxArea_setTransparency(uint area, byte transparency);
        //创建缺省时钟区
        // x - x坐标
        // y - y坐标
        // width - å®½åº¦
        // heigth - é«˜åº¦
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DefaultTimeClockBxArea(uint* area, int x, int y, int width, int heigth, uint screenprofile);
        //添加时间单元
        // unit - æ—¶é—´å•å…ƒ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DefaultTimeClockBxArea_addUnit(uint area, uint unit);
        //取得时间单元资讯
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DefaultTimeClockBxArea_getUnit(uint* unit, uint area, uint p1);
        //取得时间单元资讯数量
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DefaultTimeClockBxArea_getUnitSize(uint* unitszie, uint area);
        //创建计时区
        // x - x坐标
        // y - y åæ ‡
        // width - è®¡æ—¶åŒºå®½åº¦
        // heigth - è®¡æ—¶åŒºé«˜åº¦
        // p5 - æœªçŸ¥
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TimerBxArea(uint* area, int x, int y, int width, int heigth, int p5, uint screenprofile);
        //创建计时单元
        // x - ç›¸å¯¹äºŽè®¡æ—¶åŒºX坐标的X坐标
        // y - ç›¸å¯¹äºŽè®¡æ—¶åŒºY坐标的Y坐标
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TimerBxUnit(uint* unit, int x, int y, uint screenprofile);
        //创建计时单元
        // x - ç›¸å¯¹äºŽè®¡æ—¶åŒºX坐标的X坐标
        // y - ç›¸å¯¹äºŽè®¡æ—¶åŒºY坐标的Y坐标
        // profile - å±å¹•è§„æ ¼
        // mode - æ˜¾ç¤ºå†…容类型
        // counter - è®¡æ•°å€¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TimerBxUnit2(uint* unit, int x, int y, uint profile, int mode, int counter);
        //创建计时区格式
        // hour - æ—¶å€™æ˜¾ç¤ºå°æ—¶
        // minute - æ˜¯å¦æ˜¾ç¤ºåˆ†é’Ÿ
        // second - æ˜¯å¦æ˜¾ç¤ºç§’
        // millisecond - æ˜¯å¦æ˜¾ç¤ºæ¯«ç§’
        // phour - æ˜¯å¦æ˜¾ç¤º[小时]文字
        // pminute - æ˜¯å¦æ˜¾ç¤º[分钟]文字
        // psecond - æ˜¯å¦æ˜¾ç¤º[秒]文字
        // pmillisecond - æ˜¯å¦æ˜¾ç¤º[毫秒]文字
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TimerBxUnitFormat(uint* format, bool hour, bool minute, bool second, bool millisecond, bool phour, bool pminute, bool psecond, bool pmillisecond);
        //获取组元
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TimerBxArea_getUnit(uint* unit, uint area);
        //获取计数值
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TimerBxUnit_getCounter(uint* counter, uint unit);
        //获取显示内容格式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TimerBxUnit_getFormat(uint* format, uint unit);
        //取得秒表计算方式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TimerBxUnit_getMode(int* mode, uint unit);
        //设定计数值
        // counter - è®¡æ•°å€¼  å•位为毫秒
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TimerBxUnit_setCounter(uint unit, uint counter);
        //设定显示内容格式
        // format - æ˜¾ç¤ºå†…容格式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TimerBxUnit_setFormat(uint unit, uint format);
        //设定秒表计算方式
        // mode - ç§’表计算方式 0:正计时累加 1:倒计时累加 2:正计时不累加 3:倒计时不累加
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TimerBxUnit_setMode(uint unit, int mode);
        //创建重整字单元
        // name - é‡æ•´å•元名
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_CompositeBxUnit(uint* unit, string name);
        //重整计算各单元的坐标
        // container - åŽŸåŒºåŸŸå¤§å°
        // x - æ­¤å•元配置X坐标
        // y - æ­¤å•元配置Y坐标
        // center - æ˜¯å¦å±…中
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CompositeBxUnit_arrange(uint arrange, uint unit, int x, int y, bool center);
        //取得字型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CompositeBxUnit_getFont(uint font);
        //取得前景色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CompositeBxUnit_getForeground(uint foreground);
        //取得相对于时间区域X坐标的X坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CompositeBxUnit_getX(uint x);
        //取得相对于时间区域Y坐标的Y坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CompositeBxUnit_getY(uint y);
        //偏移x坐标
        // x - x坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CompositeBxUnit_offsetX(uint unit, int x);
        //偏移Y坐标
        // y - Y坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CompositeBxUnit_offsetY(uint unit, int y);
        //设定字型
        // font - å­—åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CompositeBxUnit_setFont(uint unit, uint font);
        //设定前景色
        // foreground - å‰æ™¯è‰²
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CompositeBxUnit_setForeground(uint unit, uint forefround);
        //取得显示类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CommonBxUnit_getUnitMode(byte* mode, uint unit);
        //设定显示类型
        // meod - æ˜¾ç¤ºç±»åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CommonBxUnit_setUnitMode(uint unit, byte mode);
        //创建计时区
        // x - x坐标
        // y - y坐标
        // width - è®¡æ—¶åŒºå®½åº¦
        // heigth - è®¡æ—¶åŒºé«˜åº¦
        // desttime - ç›®æ ‡æ—¶é—´
        // screenprofiel - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_CounterBxArea(uint* area, int x, int y, int width, int heigth, uint srceenprofile);
        //创建计时单元
        // x - ç›¸å¯¹äºŽè®¡æ—¶åŒºX坐标的X坐标
        // y - ç›¸å¯¹äºŽè®¡æ—¶åŒºY坐标的Y坐标
        // sceenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_CounterBxUnit(uint* unit, int x, int y, uint screenprofile);
        //创建计时单元
        // x - ç›¸å¯¹äºŽè®¡æ—¶åŒºX坐标的X坐标
        // y - ç›¸å¯¹äºŽè®¡æ—¶åŒºY坐标的Y坐标
        // screenprofile - å±å¹•è§„æ ¼
        // mode - æ˜¾ç¤ºå†…容类型 0:正计时累加,1:倒计时累加,2:正计时不累加,3:倒计时不累加
        // desttime - ç›®æ ‡æ—¶é—´
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_CounterBxUnit2(uint* unit, int x, int y, uint screenprofile, int mode, uint desttime);
        //创建计时单元格式
        // day - æ˜¯å¦æ˜¾ç¤ºå¤©
        // hour - æ˜¯å¦æ˜¾ç¤ºæ—¶
        // minute - æ˜¯å¦æ˜¾ç¤ºåˆ†
        // second - æ˜¯å¦æ˜¾ç¤ºç§’
        // pday - æ˜¯å¦æ˜¾ç¤º[天]文字
        // phour - æ˜¯å¦æ˜¾ç¤º[时]文字
        // pminute - æ˜¯å¦æ˜¾ç¤º[分]文字
        // psecond - æ˜¯å¦æ˜¾ç¤º[秒]文字
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_CounterBxUnitFormat(uint* unit, bool day, bool hour, bool minute, bool second, bool pday, bool phour, bool pminute, bool psecond);
        //取得元组
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CounterBxArea_getUnit(uint* unit, uint area);
        //取得目标时间
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CouterBxUnit_getDestTime(uint* desttime, uint unit);
        //取得显示内容格式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CounterBxUnit_getFormat(uint* format, uint unit);
        //取得计时器计算方式
        [DllImport("onbob.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CounterBxUnit_getMode(uint* mode, uint unit);
        //设定慕白哦时间
        // desttime - ç›®æ ‡æ—¶é—´
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CounterBxUnit_setDestTime(uint unit, uint desttime);
        //设定显示内容格式
        // format - æ˜¾ç¤ºå†…容格式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CounterBxUnit_setFormat(uint unit, uint format);
        //设定计时器计算方式
        // mode - è®¡æ—¶å™¨è®¡ç®—方式 0:正计时累加,1:倒计时累加,2:正计时不累加,3:倒计时不累加
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int CounterBxUnit_SetMode(uint unit, int mode);
        //创建温度区
        // x - X坐标
        // y - Y坐标
        // width - æ¸©åº¦åŽ»å®½åº¦
        // heigth - æ¸©åº¦åŒºé«˜åº¦
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TemperatureBxArea(uint* area, int x, int y, int width, int heigth, uint scrennprofile);
        //取得显示格式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TemperatureBxArea_getDisplayUnitType(int* type, uint area);
        //设置显示格式
        // type - æ˜¾ç¤ºæ ¼å¼ 0-摄氏 1- åŽæ°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TemperatureBxArea_setDisplayUnitType(uint area, int type);
        //创建湿度区
        // x - x坐标
        // y - y坐标
        // width - å®½åº¦
        // heigth - é«˜åº¦
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_HumidityBxArea(uint* area, int x, int y, int width, int heigth, uint screenprofile);
        //创建噪声区
        // x - X坐标
        // y - Y坐标
        // width - åŒºåŸŸå®½åº¦
        // heigth - åŒºåŸŸé«˜åº¦
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_NoiseBxArea(uint* area, int x, int y, int width, int heigth, uint screenprofile);
        //创建农历区
        // x - x坐标
        // y - y坐标
        // width - å®½åº¦
        // heigth - é«˜åº¦
        // screenprofile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_FestivalBxArea(uint* area, int x, int y, int width, int heigth, uint screenprofile);
        //创建农历单元
        // x - x相对于农历区X坐标的X坐标
        // y - y相对于农历区Y坐标的Y坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_FestivalBxUnit(uint* unit, int x, int y, uint screenprofile);
        //取得单元颜色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FestivalBxArea_getUnitColor(uint color);
        //设定单元颜色
        // unitcolor - å•元颜色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FestivalBxArea_setUnitColor(uint unit, uint unitcolor);
        //添加传感器区入口
        // alarmtype - æŠ¥è­¦ç±»åž‹ 0:低于临界值报警  1:高于临界值报警
        // value - å€¼
        // normal - æ­£å¸¸æ˜¾ç¤ºçš„颜色
        // alarm - æŠ¥è­¦æ˜¾ç¤ºçš„颜色
        [DllImport("onbob.ap.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_addThreshold(uint area, int alarmtype, uint value, uint normalcolor, uint alarmcolor);
        //清除传感器入口
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_clearThresholds(uint area);
        //取得修正值
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_getCorrection(uint* correction, uint area);
        //取得修正极性
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_getCorrectionPolar(int* polar, uint area);
        //取得浮点数
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_getNumberFloat(byte* number, uint area);
        //取得整数
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_getNumberInt(byte* number, uint area);
        //取得传感器类型  0: æ¸©åº¦  1: æ¹¿åº¦  2:噪声  0xff:全能
        [DllImport("obnon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_getSensorMode(byte* mode, uint area);
        //取得传感器类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_getSensorType(byte* type, uint area);
        //取得传感器单元
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_getSensorUnit(byte* unit, uint area);
        //取得静态文字
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_getStaticText(uint* text, uint area);
        //取得透明度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_getTransparency(uint area);
        //是否显示背景
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_isBackgroundFlag(bool* isbackground, uint area);
        //取得湿度是否显示小数位
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_isFractionPart(bool* isfractionpart, uint area);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_isSensorUnitFlag(bool* isunitflag, uint area);
        //显示背景遮罩的部分
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_maskByBackground(uint area);
        //与背景重叠显示
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_overlayWithBackground(uint area);
        //设定是否显示背景
        // isbackground - æ˜¯å¦æ˜¾ç¤ºèƒŒæ™¯
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setBackgroundFlag(uint area, bool isbackground);
        //设定修正值
        // correction - ä¿®æ­£å€¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setCorrection(uint area, uint correction);
        //设定修正极性
        // correctionpolar - ä¿®æ­£æžæ€§
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setCorrectionPolar(uint area, int correctionpolar);
        //设定湿度是否显示小数位
        // fractionalpart - æ˜¯å¦æ˜¾ç¤ºå°æ•°ä½
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setFractionalPart(uint area, bool ispart);
        //设定浮点
        // float - æµ®ç‚¹
        [DllImport("onbon.ap.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setNumberFloat(uint area, byte nunberfloat);
        //设定整型
        // numberint - æ•´åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setNumberInt(uint area, byte numberint);
        //设定传感器类型
        // type - ä¼ æ„Ÿå™¨ç±»åž‹ æ¸©åº¦ï¼š0-DS18B20; 1-SHT11; æ¹¿åº¦ï¼š0-SHT11; 1-AM2301; å™ªå£°ï¼š0-AWA5636-3; 1-HS5633T; 2-AZ8921
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setSensorType(uint area, byte type);
        //设定传感器单元
        // flag -
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setSensorUnitFlag(uint area, bool flag);
        //设定静态文字
        // text - é™æ€æ–‡å­—
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setStaticText(uint area, string text);
        //设定透明度 å½“该值大于等0(不透明)小于等于100(全透明)时,以该背景区域为基准
        // transparency - é€æ˜Žåº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SensorBxArea_setTransparency(uint area, byte transparency);
        //创建二进制文本
        // width - å®½åº¦
        // heigth - é«˜åº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextBinary(uint* binarytext, uint width, uint heigth);
        //取得背景色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_getBackground(uint textbinary);
        //取得字型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_getFont(uint textbinary);
        //取得前景色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_getForeground(uint textbinary);
        //取得高度
        // heigth - é«˜åº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_getHeigth(int* heigth, uint textbinary);
        //取得宽度
        // width - å®½åº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_getWidth(int* width, uint textbinary);
        //设定背景色
        // background - èƒŒæ™¯è‰²
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_setBackground(uint textbinary, uint background);
        //设定字型
        // font - å­—åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_setFont(uint binarytext, uint font);
        //设定前景色
        // foreground - å‰æ™¯è‰²
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_setForeground(uint textbinary, uint foreground);
        //设定高度
        // heigth - é«˜åº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_setHeigth(uint textbinary, int heigth);
        //设定款度
        // width - å®½åº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBinary_setWidth(uint textbinary, int width);
        //创建文本页
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextBxPage(uint* page);
        //创建文本页
        // text - æ–‡å­—讯息
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextBxPage2(uint* page, string text);
        //创建文本页
        // text - æ–‡å­—讯息
        // font - å­—åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextBxPage3(uint* page, string text, uint font);
        //创建文本页
        // text - æ–‡å­—讯息
        // font - å­—åž‹
        // foreground - æ–‡å­—颜色
        // backgroudn - èƒŒæ™¯é¢œè‰²
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextBxPage4(uint* page, string text, uint font, uint foreground, uint background);
        //创建文本页
        // text - æ–‡å­—讯息
        // font - å­—åž‹
        // foreground - æ–‡å­—颜色
        // baockground - èƒŒæ™¯é¢œè‰²
        // linebreak - æ˜¯å¦æ¢è¡Œå³æ¢é¡µ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextBxPage5(uint* page, string text, uint font, uint foreground, uint background, bool linebreak);
        //创建文本页
        // font - å­—åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextBxPage6(uint* page, uint font);
        //创建图片文件页
        // filepath - å›¾ç‰‡æ–‡æ¡£
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ImageFileBxPage(uint* page, string filepath);
        //创建纯文字档案
        // filepath - çº¯æ–‡å­—档案
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextFileBxPage(uint* page, string filepath);
        //创建纯文字文档
        // filepath - çº¯æ–‡å­—文档
        // font - å­—åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextFileBxPage2(uint* page, string filepath, uint font);
        //创建纯文字文档
        // filepath - çº¯æ–‡å­—文档
        // font - å­—åž‹
        // foreground - æ–‡å­—颜色
        // background - èƒŒæ™¯é¢œè‰²
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_TextFileBxPage3(uint* page, string filepath, uint font, uint foreground, uint background);
        //取得背景色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_getBackground(uint page);
        //取得字型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_getFont(uint page);
        //取得文字色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxpage_getForegroud(uint page);
        //取得首尾相连间隔
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_getHeadTailInterval(uint page);
        //取得水平对齐方式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_getHorizontalAlignment(uint page);
        //取得文字讯息
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_getText(uint page);
        //取得垂直对齐方式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_getVerticalAlignment(uint page);
        //取得是否换行即换页
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_isLineBreak(uint page);
        //新增一行文字
        // text - æ–‡å­—
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_newLine(uint* page1, uint page, string text);
        //设定背景色
        // background - èƒŒæ™¯è‰²
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_setBackgroun(uint page, uint background);
        //设定字型
        // font - å­—åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_setFont(uint page, uint font);
        //设定文字色
        // foreground - æ–‡å­—色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_setForeground(uint page, uint foreground);
        //设定首尾相连间隔
        // headtaillnterval - é¦–尾相连间隔  >= 0:前后讯息间隔的像素   -2 ï¼šå‰åŽè®¯æ¯è¢«éš”离
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_setHeadTaillnterval(uint page, int headtaillnterval);
        //设定水平对齐方式
        // horizontalalignment 0:居中 1:居左 2:居右
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_setHorizontalAlignment(uint page, int horizontalaligment);
        //设定是否换行即换页
        // linebreak - æ¢è¡Œå³æ¢é¡µ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_setLineBreak(uint page, bool linebreak);
        //设定文字讯息
        // text - æ–‡å­—讯息
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_setText(uint page, string text);
        //设定垂直对齐方式
        // verticalalignment - åž‚直对齐方式 0:居中 1:居上 2:居下
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextBxPage_setVerticalAlignment(uint page, int verticalalignment);
        //取得背景有效标记
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_getValidFlag(byte* flag, uint page);
        //取得清屏方式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_getClearMode(byte* mode, uint page);
        //取得播放样式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_getDisplayStyle(uint* style, uint page);
        //取得边框速率
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_getFrameRate(byte* rate, uint page);
        //取得重复次数
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_getRepeatTime(byte* times, uint page);
        //取得声音标记
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_getSoundFlag(byte* flag, uint page);
        //取得速度等级
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_getSpeed(byte* speed, uint page);
        //取得停留时间
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_getStayTime(ushort* staytime, uint page);
        //取得有效长度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_getValidLen(ushort* len, uint page);
        //设置背景有效标记
        // p1 -
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_setBgValidFlag(uint page, byte p1);
        //设定清屏方式
        // clearmode - æ¸…屏方式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_setClearMode(uint page, byte clearmode);
        //设定播放样式
        // displaystyle - æ’­æ”¾æ ·å¼ æ ·å¼ç¼–号: 0:随机显示;1:静止显示;2:快速打出;3:向左移动;4:向左连移;5:向上移动; 6:向上连移;7:闪烁;8:飘雪;9:冒泡;10:中间移动; 11:左右移入;12:左右交叉移入;13:上下交叉移入;14:画卷闭合;15:画卷打开; 16:向左拉伸;17:向右拉伸;18:向上拉伸;19:向下拉伸;20:向左镭射; 21:向右镭射;22:向上镭射;23:向下镭射;24:左右交叉拉幕;25:上下交叉拉幕; 26:分散左拉;27:水平百叶;28:垂直百叶;29:向左拉幕;30:向右拉幕; 31:向上拉幕;32:向下拉幕;33:左右闭合;34:左右对开;35:上下闭合; 36:上下对开;37:向右移动;38:向右连移;39:向下移动;40:向下连移; 41:45度左旋;42:180度左旋;43:90度左旋;44:45度右旋;45:180度右旋; 46:90度右旋;47:菱形打开;48:菱形闭合
        //若样式是向左连移或向上连移,stayTime æœƒè®¾å®šç‚ºé›¶ã€‚可在设定播放样式後再重新设定停留时间。
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_setDisplayStyle(uint page, uint displaystyle);
        //设定边框速率
        // rate - è¾¹æ¡†é€Ÿçއ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_setFrameRate(uint page, byte rate);
        //设定重复次数
        // repeattimes - é‡å¤æ¬¡æ•°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_setRepeatTime(uint page, byte times);
        //设定声音标记
        // p1
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_setSoundFlag(uint page, byte p1);
        //设定速度等级
        // speed - è¿è¡Œé€Ÿåº¦ 0最快-63最慢
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_setSpeed(uint page, uint speed);
        //设定停留时间
        // time - åœç•™æ—¶é—´ å•位毫秒
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_setStayTime(uint page, ushort time);
        //设定有效长度
        // len - æœ‰æ•ˆé•¿åº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxPage_setValidLen(uint page, ushort len);
        //增加图片
        // image - å›¾ç‰‡
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ImageBxPage_addImage(uint page, uint image);
        //清除所有图片
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ImageBxPage_clearImages(uint page);
        //取得图片文件
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ImageFileBxPage_getFilePath(uint page);
        //取得换行处理方式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextFileBxPage_getBreakType(uint page);
        //取得文字文档编码
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextFileBxPage_getEncoding(uint page);
        //取得纯文字文档
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextFileBxPage_getFilePath(uint page);
        //设定换行处理方式
        // breaktype - æ¢è¡Œå¤„理方式 0:追加 1:换行 2:换页
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextFileBxPage_setBreakType(uint page, int breaktype);
        //设定文字档案编码
        // encoding - æ–‡å­—档案编码
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextFileBxPage_setEncoding(uint page, string encoding);
        //设定纯文字档案
        // filepath - çº¯æ–‡å­—档案
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int TextFileBxPage_setFilePath(uint page, string filepath);
        //创建标识文件
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_LogoBxFile(uint* file);
        //增加区域
        // area - åŒºåŸŸ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int LogoBxFile_addArea(uint logofile, uint area);
        //取得区域数量
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int LogoBxFile_getAreaCount(int* count, uint logofile);
        //取得文件名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int LogoBxFile_getFileName(uint logofile);
        //取得文件时间范围
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int LogoBxFile_getTimeSpan(int* span, uint logofile);
        //设置文件时间范围
        // span - æ–‡ä»¶æ—¶é—´èŒƒå›´
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int LogoBxFile_setTimeSpan(uint logofile, int span);
        //取得单元显示内容字型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxUnit_getFont(uint unit);
        //取得单元颜色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxUnit_getUnitColor(uint* color, uint unit);
        //取得相对于时间区X坐标的X坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxUnit_getUnitX(ushort* x, uint unit);
        //取得相对于时间区Y坐标的Y坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxUnit_getUnitY(ushort* y, uint unit);
        //设定单元显示内容字型
        // font - å­—åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxUnit_setFont(uint unit, uint font);
        //设定对齐方式
        // align - å¯¹é½æ–¹å¼ 0:左对齐,1:居中,2:右对齐
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxUnit_setUnitAlign(uint unit, byte align);
        //设定单位颜色
        // color - å•位颜色
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxUnit_setUnitColor(uint unit, uint color);
        //设定相对于时间区域X坐标的X坐标
        // x - x坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxUnit_setUnitX(uint unit, ushort x);
        //设定相对于时间区域Y坐标的Y坐标
        // y - y坐标
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxUnit_setUnitY(uint unit, ushort y);
        //创建文本单元
        // x - ç›¸å¯¹äºŽæ—¶é—´åŒºåŸŸX坐标的X坐标
        // y - ç›¸å¯¹äºŽæ—¶é—´åŒºåŸŸY坐标的Y坐标
        // screenprofile - å±å¹•è§„æ ¼
        // text - æ–‡å­—内容
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_StringBxUnit(uint* unit, int x, int y, uint screenprofile, string text);
        //取得文字内容
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int StringBxUnit_getText(uint unit);
        //创建动态区
        // x - x坐标
        // y - y坐标
        // width - åŒºåŸŸå®½åº¦
        // heigth - åŒºåŸŸé«˜åº¦
        // profile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DynamicBxArea(uint* area, int x, int y, int width, int heigth, uint profile);
        //创建动态区规则
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DynamicBxAreaRule(uint* arearule);
        //新增动态区关联的异步节目。一旦关联了某个异步节目,则当改异步节目播放时允许播放该动态区
        // programid - å…³è”的节目编号 0 -999
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_addRelativeProgram(uint arearule, uint program);
        //取得动态区编号
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_getId(int* id, uint arearule);
        //取得是否立即播放
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_getImmediatePlay(byte* immediate, uint arearule);
        //取得运行模式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_getRunMode(uint arearule);
        //取得动态区数据超时时间,单位为秒
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_getTimeout(uint arearule);
        //取得是否关联全部节目
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_isRelativeAllPrograms(uint arearule);
        //设定动态区编号
        // id - åŠ¨æ€åŒºç¼–å·
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_setId(uint arearule, int id);
        //设定是否立即播放
        // immediateplay - æ˜¯å¦ç«‹å³æ’­æ”¾
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_setImmediatePlay(uint arearule, byte immediateplay);
        //设定是否关联全部节目
        // relativeallprograms - æ˜¯å¦å…³è”全部节目
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_setRelativeAllPrograms(uint arearule, bool relativeallprograms);
        //设定动态区运行模式
        // runmode - è¿è¡Œæ¨¡å¼  0:循环显示。 1:显示完成后静止显示最后一页数据。 2:循环显示,超过设定时间后数据仍未更新时不再显示。 3:循环显示,超过设定时间后数据仍未更新时显示 Logo信息。 4:循环显示,显示完最后一页后就不再显示。
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_setRunMode(uint arearule, byte runmode);
        //设定动态区数据超时时间,单位为秒
        // timeout - åŠ¨æ€åŒºæ•°æ®è¶…æ—¶æ—¶é—´
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DynamicBxAreaRule_setTimeout(uint arearule, int timeout);
        //创建背景区
        // x - x坐标
        // y - y坐标
        // width - åŒºåŸŸå®½åº¦
        // heigth - åŒºåŸŸé«˜åº¦
        // profile - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BackgroundBxArea(uint* area, int x, int y, int width, int heigth, uint profile);
        //创建梯度背景区
        // x - x坐标
        // y - y坐标
        // width - åŒºåŸŸå®½åº¦
        // heigth - åŒºåŸŸé«˜åº¦
        // profiel - å±å¹•è§„æ ¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_GradientBackgroundBxArea(uint* area, int x, int y, int width, int heigth, uint profiel);
        //和控制器通讯的相关接口
        //同步方式将节目写入控制器
        // program - èŠ‚ç›®
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_writeProgram(uint screen, uint program);
        //同步方式将节目写入控制器,本方法不做任何检查
        // program - èŠ‚ç›®
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_writeProgramQuickly(uint screen, uint program);
        //同步方式将节目写入控制器
        // programarrary - èŠ‚ç›®ç»„æ•°ç»„
        // programcount - èŠ‚ç›®ç»„æ•°é‡
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_writePrograms(uint screen, uint* programarray, uint programcount);
        //更新动态区
        //返回执行结果
        // rule - åŠ¨æ€åŒºæ’­æ”¾æ–¹å¼
        // area - åŠ¨æ€åŒº
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_writeDynamic(uint* result, uint screen, uint rule, uint area);
        //更新控制器位址,此位址用于标识控制器,不等同于TCP位址(xxx.xxx.xxx.xxx)
        // p1 - æŽ§åˆ¶å™¨ä½å€ï¼Œ2bytes。
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_writeControllerAddress(uint* result, uint screen, ushort p1);
        //同步方式将屏幕参数写入控制器
        // ccf - å±å¹•参数
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_writeConfig(uint screen, uint ccf);
        //解除锁定节目
        //返回执行结果
        // programname - èŠ‚ç›®åç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_unlockProgram2(uint* result, uint screen, string programname);
        //解除节目锁定
        //返回执行结果
        // programid - èŠ‚ç›®id 0-999
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_unlockProgram(uint* result, uint screen, int programid);
        //解除屏幕锁定
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_unlock(uint* result, uint screen);
        //强制开启屏幕
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_turnOn(uint* result, uint screen);
        //强制关闭节目
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_turnOff(uint* result, uint screen);
        //校正系统时钟
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_syncTime(uint* result, uint screen);
        //切换至服务器模式,执行成功后,会将当前连线切断
        //返回执行结果
        // staticsetting - ç½‘络位址设置
        // serversetting - æœåŠ¡å™¨åº”ç”¨ç¨‹å¼è®¾ç½®
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_switch2ServerMode(uint* result, uint screen, uint staticsetting, uint serversetting);
        //切换至一般网络模式,执行成功后,会将当前连线切断
        //返回执行结果
        // staticsetting - ç½‘路位址设置
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_switch2ClientMode(uint* result, uint screen, uint staticsetting);
        //设定定时开关机
        //返货执行结果
        // cmd - å®šæ—¶å¼€å…³æœºï¼Œåˆ©ç”¨createTimingOnOff方法产生并设定定时开关机区间
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_setupTimingOnOff(uint* result, uint screen, uint cmd);
        //设定屏幕名称
        // aliasname - å±å¹•名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_setAliasName(uint screen, string aliasname);
        //修改传感器根据客制化传感器调整亮度
        //返回执行结果
        // env - å®¢åˆ¶åŒ–传感器亮度条件
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_sensorBrightness2(uint* result, uint screen, uint env);
        //修改传感器自动调整亮度
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_sensorBrightness(uint* result, uint screen);
        //系统复位,复位后需要重新加载屏幕参数
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_reset2Factory(uint* result, uint screen);
        //查询目前控制器上的节目清单
        //返回节目清单
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_readProgramList(uint* programlist, uint screen);
        //同步方式读取控制上的档案并保存在本地
        //返回节目
        // programname - èŠ‚ç›®åç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_readProgram2(uint* progam, uint screen, string programname);
        //同步方式读取控制上的档案并保存在本地
        //返回节目
        // programid - èŠ‚ç›®ç¼–å· 0-999
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_readProgram(uint* program, uint screen, int programid);
        //读取控制器编号
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_readControllerId(uint* result, uint screen);
        //同步方式读取控制器上的屏幕参数
        //返回屏幕参数
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_readConfig(uint* ccf, uint screen);
        //PING控制器
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_ping(uint* result, uint screen);
        //修改亮度。亮度值 0x00-0x0f
        //返回执行结果
        // level - äº®åº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_manualBrightness(uint* result, uint screen, byte level);
        //锁定节目
        //返回执行结果
        // programname - èŠ‚ç›®åç§°
        // lockduration - é”å®šç§’æ•°
        // nonvolatile - æŽ‰ç”µä¿å­˜æ–¹å¼ã€‚0x00:掉电不保存 0X01:掉电保存
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_lockProgram4(uint* result, uint screen, string programname, int lockduration, byte nonvolatile);
        //锁定节目
        //返回执行结果
        // programname - èŠ‚ç›®åç§°
        // lockduration - é”å®šç§’æ•°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_lockProgram3(uint* result, uint screen, string programname, int lockduration);
        //锁定节目
        //返回执行结果
        // progamid - èŠ‚ç›®id 0-999
        // lockduration - é”å®šç§’æ•°
        // nonvolatile - æŽ‰ç”µä¿å­˜æ–¹å¼ã€‚0x00:掉电不保存 0x01:掉电保存
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_lockProgram2(uint* result, uint screen, int programid, int lockduration, byte nonvolatile);
        //锁定节目
        //返回执行结果
        // programid - èŠ‚ç›®ç¼–å· 0-999
        // lockduration - é”å®šç§’æ•°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_lockProgram(uint* result, uint screen, int programid, int lockduration);
        //锁定屏幕
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_lock(uint* result, uint screen);
        //是否已经连线
        //返回连线与否
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_isConnected(bool* isconnected, uint screen);
        //取得运行模式
        //返回运行模式 0: CLIENT 1: SERVER, 2: RS232,
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_getRunMode(int* mode, uint screen);
        //取得net编号,ONBON内部唯一识别码
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_getNetId(uint* netid, uint screen);
        //取得控制器类型
        //返回控制器类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_getControllerType(uint scrren);
        //取得控制器位址
        //返回控制器位址
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_getControllerAddress(ushort* address, uint screen);
        //取得控制器
        //返回控制器
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_getController(uint* controller, uint screen);
        //取得屏幕名称
        //返回屏幕名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_getAlisaName(uint screen);
        //discover控制器
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_discover(uint* result, uint screen);
        //删除控制器上的特定节目组
        //返回执行结果
        // programs - æŽ§åˆ¶å™¨ä¸Šçš„特定节目组
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_deletePrograms2(uint* result, uint screen, string programs);
        //删除控制器上的所有节目
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_deletePrograms(uint* result, uint screen);
        //删除控制器上的特定节目
        //返回执行结果
        // program - æŽ§åˆ¶å™¨ä¸Šçš„特定节目
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_deleteProgram2(uint* result, uint screen, string program);
        //删除控制器上的特定节目
        //返回执行结果
        // programid - èŠ‚ç›®ç¼–å·
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_deleteProgram(uint* result, uint screen, int programid);
        //删除动态区
        //返回执行结果
        // p1
        // p2
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_deleteDynamic(uint* result, uint screen, byte* p1, uint p2);
        //删除所有动态区
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_deleteAllDynamic(uint* result, uint screen);
        //建立定时开关机。设定定时开关机区间后执行setupTimingOnOff将结果传送至控制器
        //返回定时开关机
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_createTimingOnOff(uint* onoff, uint screen);
        //修改根据时间调整亮度
        //返回执行结果
        // p1
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_clockBrightness(uint* result, uint screen, uint p1);
        //查询文件系统容量
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_checkMemVolumes(uint* result, uint screen);
        //查询当前固件状态
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_checkFirmware(uint* result, uint screen);
        //查询控制器状态
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_checkControllerStatus(uint* result, uint screen);
        //改变输出缓存大小。有效范围512Bytes-65KB。注意:改变缓存大小前请确认控制卡可接受上限,超过会造成控制卡运作失败。
        // buffersize - ç¼“存大小
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_changeOutputBuffer(uint screen, int buffersize);
        //取消定时开关机
        //返回执行结果
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_cancelTimingOnOff(uint* result, uint screen);
        //是否逾时
        //返回 true:若命令回应逾时
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxResponseCmd_isTimeout(uint cmd);
        //判断命令是否被正确执行
        //返回 true:命令被正确执行并回应对应结果。false:回应为NACK或逾时
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxResponseCmd_isOK(uint cmd);
        //回应是否为NACK
        //返回true:若回应为NACK
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxResponseCmd_isNACK(uint cmd);
        //取得错误码
        //返回错误码
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxResponseCmd_getErrorType(uint cmd);
        //和控制器断开连接
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreen_disconnect(uint screen);
        //输出接口
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FObject_dump(uint dump);
        //输出接口
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FObject_dump(int dump);
        //输出接口
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FObject_dump(bool dump);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FObject_release(uint release);
        //颜色接口
        // reb - çº¢
        // green - ç»¿
        // blue - è“
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_FColor(uint* foreground, byte red, byte green, byte blue);
        //创建字体
        // fontname - å­—体名称,比如“宋体”
        // fontsize - å­—体高度,像素点
        // italic - æ˜¯å¦æ–œä½“
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_FFont(uint* font, string fongname, uint fontsize, bool italic);
        //创建显示特技
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DisplayStyleFactory(uint* style);
        //其他接口
        //设定亮度条件
        // indexvalue - åŠå°æ—¶ç´¢å¼• 0-47 ï¼ˆ00:00 - 00:29)-(23:30-23:59)
        // brightness -  äº®åº¦ 1-16
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxBrightnessClockEnv_setup(uint h, byte indexvalue, byte brightness);
        //设定亮度条件
        // brightnesslevel - äº®åº¦ç­‰çº§ 0-15
        // environment - çŽ¯å¢ƒäº®åº¦å€¼ 0-65536
        // brightness - äº®åº¦ 1-16
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxBrightnessSensorEnv_setup(uint h, byte brightnesslevel, ushort environment, byte brightness);
        //得到当前传感器的亮度值
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnBrightnessValue_Data(uint* data, uint brigthness);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_Brightness(byte* brightness, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_BrightnessAdjMode(byte* mode, uint controller);
        //建立该控制器档案阅读程式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_createFileReader(uint controller);
        //建立该控制器档案写入程式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_createFileWriter(uint controller);
        //中断连线
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_disconnect(uint controller);
        //执行命令
        // cmd - å‘½ä»¤
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_execute(uint* result, uint controller, uint cmd);
        //获取BX信息
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_getBx(uint* bx, uint controller);
        //取得控制器位址
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_getControllerAddress(uint controller);
        //取得名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_getName(uint controller);
        //取得输出缓存大小
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_getOutputBuffer(uint controller);
        //取得运行模式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_getRunMode(uint controller);
        //取得屏幕规格
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_getScreenProfile(uint* profile, uint controller);
        //取得控制器系列咨询
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_getSeries(uint controller);
        //取得是否连线
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_isConnected(uint controller);
        //设定控制器位址,此位址用于标识控制器,不等同于TCP位址(xxx.xxx.xxx.xxx)
        // addr - æŽ§åˆ¶å™¨ä½å€ï¼Œ2bytes
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxController_setControllerAddress(uint controller, ushort addr);
        //启动
        // p1 - ä½å€
        // p2 - ç«¯å£å·
        // p3 - æ˜¯å¦ä¸ºTCP
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxControllerClient_connect(bool* err, uint controller, string p1, int p2, bool p3);
        //取得名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxControllerClient_getName(uint controller);
        //取得运行模式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxControllerClient_getRunMode(uint controller);
        //连线
        // comname - com名称
        // baudrate - æ³¢ç‰¹çއ
        // databits - åœæ­¢ä½å…ƒ
        // parity - åŒä½æ£€æŸ¥
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxControllerRS_connect(uint controller, string comname, uint baudrate, byte databits, byte parity);
        //初始化
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxEnv_initial(uint env);
        //初始化
        // log4jfile - log4j配置档案
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxEnv_initial2(uint env, string log4jfile);
        //初始化
        // log4jfile - log4j配置档案
        // timeout - é€šè®¯è¶…æ—¶æ—¶é—´
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxEnv_initial3(uint env, string log4file, int timeout);
        //取得文件名称
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFile_getFileName(uint file);
        //取得文件类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFile_getFileType(uint file);
        //读取控制器上目前特定类型的文件清单
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_browse(uint* browse, uint file);
        //读取控制器上目前特定类型的文件清单
        // filetype - NULL表示全部的文件重类
        // dirsize - ä¸€æ¬¡æœ€å¤šè¯»å–多少个文件目录
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_browse2(uint* browse, uint file, uint filetype, byte dirsize);
        //同步读取控制器上的节目
        // programid - èŠ‚ç›®ç¼–å· 0-999
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_readProgram(uint* program, uint file, int programid);
        //读取控制器上的节目并存档
        // programid - èŠ‚ç›®ç¼–å· 0-999
        // savepath - æœ¬åœ°å­˜å‚¨å®Œæ•´çš„æ¡£æ¡ˆåç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_readProgram2(uint file, int programid, string savepath);
        //同步读取控制器上的节目
        // programfile - èŠ‚ç›®åç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_readProgram3(uint* program, uint file, string programfile);
        //读取控制器上的节目并存档
        // programfile - èŠ‚ç›®åç§°
        // savefile - æœ¬åœ°å­˜å‚¨å®Œæ•´çš„æ¡£æ¡ˆåç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_readProgram4(uint file, string programfile, string savepath);
        //非同步读取空时期上的节目
        // programid - èŠ‚ç›®ç¼–å· 0-999
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_readProgramAsync(uint file, int programid);
        //非同步读取控制器上的节目并存档
        // programid - èŠ‚ç›®ç¼–å· 0-999
        // savepath - æœ¬åœ°å­˜å‚¨å®Œæ•´çš„æ¡£æ¡ˆåç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_readProgramAsync2(uint file, int programid, string savepath);
        //非同步读取控制器上的节目
        // programfile - èŠ‚ç›®åç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_readProgramAsync3(uint file, string programfile);
        //非同步读取控制器上的节目并存档
        // programfile - èŠ‚ç›®åç§°
        // savepath - æœ¬åœ°å­˜å‚¨å®Œæ•´çš„æ¡£æ¡ˆåç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_readProgramAsync4(uint file, string programfile, string savepath);
        //同步读取控制器上的节目
        // programfile - èŠ‚ç›®åç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileReader_readProgramData(uint* program, uint file, string programfile);
        //同步将屏参写入控制器
        // ccf - å±å¹•参数
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxFileWrite_writeConfig(uint file, uint ccf);
        //主循环回调
        // p1 - å›žè°ƒå‡½æ•°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServerListener_setLoopCallback(uint h, ONBON_CALLBACK p1);
        //断线回调
        // p1 - å›žè°ƒå‡½æ•°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServerListener_setDisconnectedCallback(uint h, ONBON_CALLBACK p1);
        //连线回调
        // p1 - å›žè°ƒå‡½æ•°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServerListener_setConnectedCallback(uint h, ONBON_CALLBACK p1);
        //停止服务
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServer_stop(uint server);
        //开启服务
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServer_start(uint server);
        //移除监听器
        // listener - ç›‘听器
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServer_removeListener(uint server, uint listener);
        //服务器主循环
        // p1
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServer_loop(uint server, bool p1);
        //取得上线的屏幕控制程式
        // socketid - socket编号(识别编号)
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServer_getOnlineScreenBySocketId(uint* id, uint server, string socketid);
        //根据net编号或是GPRS的DTU编号取得先上的屏幕控制程式
        // netid - æŽ§åˆ¶å™¨net编号或是GPRS的DTU编号
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServer_getOnlineScreenByNetId(uint* id, uint server, string netid);
        //清除所有监听器
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServer_clearListeners(uint server);
        //增加监听器
        // listener - ç›‘听器
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxServer_addListener(uint server, uint listener);
        //检查是否可进行工作
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenServer_isReady(bool* isready, uint server);
        //取得TCP通讯端口
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenServer_getPort(ushort* port, uint server);
        //取得识别编号,等于socket编号
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenServer_getId(int* id, uint server);
        //取得TCP位址
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenServer_getAddress(uint server);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenServer_accept(uint server);
        //设定双击设点阵类型
        // matrixtype - åŒå‡»è‰²ç‚¹é˜µç±»åž‹
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenProfile_setMatrixType(uint screen, int matrixtype);
        //取得是否为全彩
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenProfile_isFullColor(uint screen);
        //取得屏幕宽度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenProfile_getWidth(uint screen);
        //取得双基色点阵类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenProfile_getMatrixType(uint screen);
        //取得屏幕高度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenProfile_getHeigth(uint screen);
        //取得基色类型
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenProfile_getColorType(uint screen);
        //取得转换成色码
        // color - é¢œè‰²
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenProfile_encodeColor(uint screen, uint color);
        //取得转换成颜色
        // color - è‰²ç 
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenProfile_decodeColor(uint screen, uint color);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BxScreenProfile_createMessageConst(uint screen);
        //创建亮度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxBrightnessClockEnv(uint* brightness);
        //创建亮度传感器
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxBrightnessSensorEnv(uint* brightnesssensor);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxEnv(uint* bxenv);
        //创建page页
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxPage(uint* page);
        //创建定时开关机命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_CancelScreenTimingOnOffCmd(uint* cmd);
        //创建检查控制器状态命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_CheckControllerStatusCmd(uint* cmd);
        //创建检查当前固件命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_CheckCurrentFirmwareCmd(uint* cmd);
        //创建检查FPGA状态命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_CheckFPGAStatusCmd(uint* cmd);
        //创建删除动态区命令
        // isall æ˜¯å¦å…¨éƒ¨åˆ é™¤
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DeleteDynamicAreaCmd(uint* cmd, bool isall);
        //创建删除动态区命令
        // index - åŠ¨æ€åŒºç¼–å·
        // size - åŠ¨æ€åŒºå¤§å°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DeleteDynamicAreaCmd2(uint* cmd, byte* index, uint size);
        //创建删除密码命令
        // secret - æ—§å¯†ç 
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_DeleteSecretCmd(uint* cmd, byte* secret);
        //创建文件删除命令
        // ofs - æ˜¯å¦ä¸ºèŠ‚ç›®ç±»åž‹æ¡£æ¡ˆ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_FileDeleteCmd(uint* cmd, bool ofs);
        //创建获取亮度值命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_GetBrightnessValueCmd(uint* cmd);
        //创建获取音量值命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_GetMemVolumeCmd(uint* cmd);
        //创建
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_GetTransStatusCmd(uint* cmd);
        //设定使用传感器自动检测亮度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ModifyBrightnessCmd(uint* cmd);
        //设定手动亮度
        // brightness - äº®åº¦ 0X00-0X0F
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ModifyBrightnessCmd2(uint* cmd, byte brightness);
        //设定定时亮度
        // p1 - äº®åº¦æ¡ä»¶
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ModifyBrightnessCmd3(uint* cmd, uint p1);
        //定制化传感器亮度。
        // env - äº®åº¦æ¡ä»¶
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ModifyBrightnessCmd4(uint* cmd, uint env);
        //创建快速设置地址命令
        // screenno - å±å·
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_QuicklySetAddrCmd(uint* cmd, ushort screenno);
        //创建快速设置名称命令
        // name - åç§°
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_QuicklySetNameCmd(uint* cmd, string name);
        //创建读取控制器ID命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ReadControllerIDCmd(uint* cmd);
        //创建读取版权信息命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ReadCopyrightInfoCmd(uint* cmd);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ReadDirBlockCmd(uint* cmd, ushort p1);
        //
        // p1
        // p2
        // p3
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ReadFileBlockCmd(uint* cmd, bool p1, string p2, uint p3);
        //创建锁屏命令
        // p1 - æ˜¯å¦æ–­ç”µä¿å­˜
        // p2 - æ˜¯å¦é”å®š
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ScreenLockCmd(uint* cmd, bool p1, bool p2);
        //创建定时开关屏命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ScreenTimingOnOffCmd(uint* cmd);
        //创建设置条码命令
        // barcode - æ¡ç 
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_SetBarCodeCmd(uint* cmd, byte* barcode);
        //创建设置密码命令
        // p1 - 6字节旧密码
        // p2 - 6字节新密码
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_SetSecretCmd(uint* cmd, byte* p1, byte* p2);
        //创建设置地址命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_SetupAddressCmd(uint* cmd);
        //创建设置MAC地址命令
        // p1 -
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_SetupMACCmd(uint* cmd, byte* p1);
        //创建开始读取目录命令
        // filetype - æ–‡ä»¶ç±»åž‹
        // dirsize - æ–‡ä»¶ç›®å½•块大小
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_StartReadDirCmd(uint* cmd, byte filetype, byte dirsize);
        //创建开始读取文件命令
        // ofs - æ˜¯å¦ä¸ºèŠ‚ç›®ç±»åž‹æ¡£æ¡ˆ
        // p2 -
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_StartReadFileCmd(uint* cmd, bool ofs, string p2);
        //
        // p1 - æ˜¯å¦å¼€å¯
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_SwitchOnOffScreenCmd(uint* cmd, bool p1);
        //创建系统锁定命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_SystemClockCorrectCmd(uint* cmd);
        //创建系统重置命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_SystemResetCmd(uint* cmd);
        //创建更新动态区命令
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_UpdateDynamicAreaCmd(uint* cmd);
        //创建控制卡配置文件
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ControllerConfigBxFile(uint* file);
        //取得指定样式
        // styleid - æ ·å¼ç¼–号: 0:随机显示;1:静止显示;2:快速打出;3:向左移动;4:向左连移;5:向上移动; 6:向上连移;7:闪烁;8:飘雪;9:冒泡;10:中间移动; 11:左右移入;12:左右交叉移入;13:上下交叉移入;14:画卷闭合;15:画卷打开; 16:向左拉伸;17:向右拉伸;18:向上拉伸;19:向下拉伸;20:向左镭射; 21:向右镭射;22:向上镭射;23:向下镭射;24:左右交叉拉幕;25:上下交叉拉幕; 26:分散左拉;27:水平百叶;28:垂直百叶;29:向左拉幕;30:向右拉幕; 31:向上拉幕;32:向下拉幕;33:左右闭合;34:左右对开;35:上下闭合; 36:上下对开;37:向右移动;38:向右连移;39:向下移动;40:向下连移; 41:45度左旋;42:180度左旋;43:90度左旋;44:45度右旋;45:180度右旋; 46:90度右旋;47:菱形打开;48:菱形闭合
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int DisplayStyleFactory_getStyle(uint* style, uint displaystyle, int styleid);
        //创建文件格式
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_FileType(uint* filetype);
        //取得边框移动步长,单位为pixel,范围 1-16
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_getFrameMoveStep(uint* movestep, uint frame);
        //取得边框显示速度 é€Ÿåº¦ 1-48
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_getFrameSpeed(byte* speed, uint frame);
        //取得边框显示效果 0:闪烁。 1:顺时针转动。 2:逆时钟转动。 3:闪烁并顺时钟转动。 4:闪烁并逆时钟转动。 5:红绿交替闪烁。 6:红绿交替转动。 7:静止打出。
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_getFrameStyle(byte* style, uint frame);
        //取得边框宽度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_getFrameWdith(byte* width, uint frame);
        //取得是否显示边框
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_isFrameShow(bool* isshow, uint frame);
        //载入内建边框特效底图
        // styleindex - å†…建效果编号,双基色1-18  å•基色 1-14
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_loadFrameImage(byte* image, uint frame, int styleindex);
        //设置边框移动步长。单位pixel,范围1-16
        // movestep - è¾¹æ¡†ç§»åŠ¨æ­¥é•¿
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_setFrameMoveStep(uint frame, byte movestep);
        //设定是否显示边框
        // isshow - æ˜¯å¦æ˜¾ç¤ºè¾¹æ¡†
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_setFrameShow(uint frame, bool isshow);
        //设定边框显示速度
        // speed - è¾¹æ¡†æ˜¾ç¤ºé€Ÿåº¦ 1-48
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_setFrameSpeed(uint frame, byte speed);
        //设置边框显示效果
        // framestyle - è¾¹æ¡†æ˜¾ç¤ºæ•ˆæžœ 0:闪烁。 1:顺时针转动。 2:逆时钟转动。 3:闪烁并顺时钟转动。 4:闪烁并逆时钟转动。 5:红绿交替闪烁。 6:红绿交替转动。 7:静止打出。
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FFrame_setFrameStyle(uint frame, byte framestyle);
        //添加需要删除的文件名
        // filename - æ–‡ä»¶å
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FileDeleteCmd_addFileNames(uint cmd, string filename);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_ServerSetting(uint* setting);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_StaticSetting(uint* staticsetting);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FColor_A(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FColor_B(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FColor_G(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FColor_R(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_GetYear(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_GetMonth(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_GetDay(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_GetHour(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_GetMinute(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_GetSecond(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_SetYear(uint h, byte year);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_SetMonth(uint h, byte month);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_SetDay(uint h, byte day);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_SetHour(uint h, byte hour);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_SetMinuet(uint h, byte minute);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FDate_SetSecond(uint h, byte second);
        //
        // p1
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Fstrarr_add(uint h, string p1);
        //
        // p1
        // p2
        // p3
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Fstrarr_get(uint h, uint p1, byte* p2, int p3);
        //获取字符串
        // p1
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FString_GetBuff(uint h, byte* p1);
        //获取字符串长度
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int FString_Size(uint* result, uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Response_getError(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Response_isACK(uint h);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Response_isNACK(uint h);
        //得到控制器ID值
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerID_Data(uint* data, uint controller);
        //得到控制器barcode
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_BarCode(uint* barcode, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_curProgram(uint* program, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_CustomID(uint* id, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_Humidity(byte* humidity, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_Noise(ushort* noise, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_OnOffStatus(byte* status, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_ProgramLockStatus(byte* status, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_ProgramNumber(ushort* number, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_RtcDate(byte* rtcdate, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_RtcHour(byte* hour, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_RtcMinute(byte* minute, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_RtcMonth(byte* momth, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_RtcSecond(byte* second, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_RtcStatus(byte* status, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_RtcWeek(byte* week, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_RtcYear(byte* year, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_RunningMode(byte* mode, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int RetturnControllerStatus_ScreenLockStatus(byte* status, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_SwithMode(byte* mode, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_Temperature1(uint* temperature, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_Temperature2(uint* temperature, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnControllerStatus_TimingOnOff(byte* onoff, uint controller);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnCopyrightInfo_Data(uint* data, uint copyrightinfo);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnMemVolume_TotalMemVolume(uint* volume, uint memvolume);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnPingStatus_Address(ushort* address, uint status);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnPingStatus_Barcode(uint* barcode, uint status);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnPingStatus_Baudrate(uint* baudrate, uint status);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnPingStatus_ControllerType(ushort* type, uint status);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnPingStatus_CurrentBright(byte* bright, uint status);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnPingStatus_CurrentOnOffStatus(byte* onoff, uint status);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnPingStatus_Firmware(uint* firmware, uint status);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnPingStatus_Heigth(ushort* heigth, uint status);
        //
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ReturnPingStatus_Width(ushort* width, uint status);
        //增加定时开关机时间区段
        // onhour - å¼€æœºå°æ—¶
        // onminute - å¼€æœºåˆ†é’Ÿ
        // offhour - å…³æœºå°æ—¶
        // offminute - å…³æœºåˆ†é’Ÿ
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int ScreenTimingOnOffCmd_addTime(uint cmd, byte onhour, byte onminute, byte offhour, byte offminute);
        //取得控制器连接模式 0:单机直连(PC ä¸ŽæŽ§åˆ¶å™¨ç›´æŽ¥è¿žæŽ¥ï¼‰ã€‚ 1:自动获取(DHCP)。 2:手动设置(Static IP)。 3:服务器模式(动态IP)。
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SetupAddressCmd_getMode(int* mode, uint cmd);
        //取得服务器墨水位址组态
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SetupAddressCmd_getServerSetting(uint cmd);
        //取得静态位址组态
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SetupAddressCmd_getStaticSetting(uint cmd);
        //设置控制器连接模式
        // mode - æŽ§åˆ¶å™¨è¿žæŽ¥æ¨¡å¼ 1: è‡ªåŠ¨èŽ·å–IP(DHCP),2: æ‰‹åŠ¨è®¾ç½®IP(static IP),3: æœåŠ¡å™¨æ¨¡å¼ï¼ˆåŠ¨æ€IP)
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SetupAddressCmd_setMode(uint cmd, byte mode);
        //设定服务器模式位址组态
        // serversetting - æœåŠ¡å™¨æ¨¡å¼ä½å€ç»„æ€
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SetupAddressCmd_setServerSetting(uint cmd, uint serversetting);
        //设定静态位址组态
        // staticsetting - é™æ€ä½å€ç»„态
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int SetupAddressCmd_setStaticSetting(uint cmd, uint staticsetting);
        //设置网关
        // gateway - ç½‘å…³
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int StaticSetting_setGateway(uint setting, byte* gateway);
        //设置IP
        // ip - ip地址
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int StaticSetting_setIP(uint setting, byte* ip);
        //设置端口
        // port - ç«¯å£
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int StaticSetting_setPort(uint setting, ushort prot);
        //设置子网掩码
        // mask - å­ç½‘掩码
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int StaticSetting_setSubNetMask(uint setting, byte* mask);
        //
        //addarea - åŠ¨æ€åŒº
        // runmode - åŠ¨æ€åŒºæ’­æ”¾æ–¹å¼
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int UpdateDynamicAreaCmd_addArea(uint cmd, uint addarea, uint runmode);
        //创建串口控制器
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxControllerRS(uint* controller);
        //创建串口控制器
        // alias - åˆ«å
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxControllerRS2(uint* controller, string alias);
        //创建串口控制器
        // alias - åˆ«å
        // bx - æŒ‡å®šbx控制器系列
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int Create_BxControllerRS3(uint* controller, string alias, uint bx);
        //设定透明度。 1.当该值大于等于 0(不透明) å°äºŽç­‰äºŽ100(全透明) æ—¶ï¼Œä»¥è¯¥èƒŒæ™¯åŒºåŸŸä¸ºåŸºå‡†ã€‚ 2.当该值为101时,采用如下算法:前景灰度不为0时,显示前景值,否则为背景值。 3.当该值为102时,采用如下算法:前景灰度不为0时,显示背景值,否则为前景值
        // p1 - é€æ˜Žåº¦
        [DllImport("onbon.api.dll", CallingConvention = CallingConvention.Cdecl)]
        public unsafe static extern int BackgroundBxArea_setTransparency(uint area, uint p1);
        #endregion
        #region BX_IV调用
        /*-------------------------------------------------------------------------------
          è¿‡ç¨‹å:    AddScreen
          å‘动态库中添加显示屏信息;该函数不与显示屏通讯,只用于动态库中的指定显示屏参数信息配置。
          å‚æ•°:
            nControlType    :显示屏的控制器型号;详见宏定义“控制器型号定义”
            nScreenNo       :显示屏屏号;该参数与LedshowTW 2013软件中"设置屏参"模块的"屏号"参数一致。
            nWidth          :显示屏宽度 16的整数倍;最小64;BX-5E系列最小为80
            nHeight         :显示屏高度 16的整数倍;最小16;
            nScreenType     :显示屏类型;1:单基色;2:双基色;
              3:双基色;注意:该显示屏类型只有BX-4MC支持;同时该型号控制器不支持其它显示屏类型。
              4:全彩色;注意:该显示屏类型只有BX-5Q系列支持;同时该型号控制器不支持其它显示屏类型。
              5:双基色灰度;注意:该显示屏类型只有BX-5QS支持;同时该型号控制器不支持其它显示屏类型。
            nPixelMode      :点阵类型;1:R+G;2:G+R;该参数只对双基色屏有效 ï¼›é»˜è®¤ä¸º2;
            nDataDA         :数据极性;,0x00:数据低有效,0x01:数据高有效;默认为0;
            nDataOE         :OE极性;  0x00:OE ä½Žæœ‰æ•ˆï¼›0x01:OE é«˜æœ‰æ•ˆï¼›é»˜è®¤ä¸º0;
            nRowOrder       :行序模式;0:正常;1:加1行;2:减1行;默认为0;
            nFreqPar        :扫描点频;0~6;默认为0;
            pCom            :串口名称;串口通讯模式时有效;例:COM1
            nBaud           :串口波特率:目前支持9600、57600;默认为57600;
            pSocketIP       :控制卡IP地址,网络通讯模式时有效;例:192.168.0.199;
              æœ¬åŠ¨æ€åº“ç½‘ç»œé€šè®¯æ¨¡å¼æ—¶åªæ”¯æŒå›ºå®šIP模式,单机直连和网络服务器模式不支持。
            nSocketPort     :控制卡网络端口;网络通讯模式时有效;例:5005
            pWiFiIP         :控制器WiFi模式的IP地址信息;WiFi通讯模式时有效;例:192.168.100.1
            nWiFiPort       :控制卡WiFi端口;WiFi通讯模式时有效;例:5005
            pScreenStatusFile:用于保存查询到的显示屏状态参数保存的INI文件名;
              åªæœ‰æ‰§è¡ŒæŸ¥è¯¢æ˜¾ç¤ºå±çŠ¶æ€GetScreenStatus时,该参数才有效
          è¿”回值            :详见返回状态代码定义。
        -------------------------------------------------------------------------------*/
        [DllImport("BX_IV.dll")]
        public static extern int AddScreen(int nControlType, int nScreenNo,
        int nWidth, int nHeight, int nScreenType, int nPixelMode, int nDataDA,
           int nDataOE, int nRowOrder, int nFreqPar, string pCom, int nBaud,
           string pSocketIP, int nSocketPort, string pWiFiIP, int nWiFiPort, string pScreenStatusFile); //添加屏显
        /*-------------------------------------------------------------------------------
          è¿‡ç¨‹å:    DeleteScreen
          åˆ é™¤æŒ‡å®šæ˜¾ç¤ºå±ä¿¡æ¯ï¼Œåˆ é™¤æ˜¾ç¤ºå±æˆåŠŸåŽä¼šå°†è¯¥æ˜¾ç¤ºå±ä¸‹æ‰€æœ‰èŠ‚ç›®ä¿¡æ¯ä»ŽåŠ¨æ€åº“ä¸­åˆ é™¤ã€‚
          è¯¥å‡½æ•°ä¸ä¸Žæ˜¾ç¤ºå±é€šè®¯ï¼Œåªç”¨äºŽåŠ¨æ€åº“ä¸­çš„æŒ‡å®šæ˜¾ç¤ºå±å‚æ•°ä¿¡æ¯é…ç½®ã€‚
          å‚æ•°:
            nScreenNo       :显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应。
          è¿”回值            :详见返回状态代码定义。
        -------------------------------------------------------------------------------}*/
        [DllImport("BX_IV.dll")]
        public static extern int DeleteScreen(int nScreenNo);//删除屏显
        /*-------------------------------------------------------------------------------
          è¿‡ç¨‹å:    SendScreenInfo
          é€šè¿‡æŒ‡å®šçš„通讯模式,发送相应信息、命令到显示屏。该函数与显示屏进行通讯
          å‚æ•°:
            nScreenNo       :显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应。
            nSendMode       :与显示屏的通讯模式;
              0:串口模式、BX-5A2&RF、BX-5A4&RF等控制器为RF串口无线模式;
              2:网络模式;
              4:WiFi模式
            nSendCmd        :通讯命令值
              SEND_CMD_PARAMETER =41471;  åŠ è½½å±å‚æ•°ã€‚
              SEND_CMD_SENDALLPROGRAM = 41456;  å‘送所有节目信息。
              SEND_CMD_POWERON =41727; å¼ºåˆ¶å¼€æœº
              SEND_CMD_POWEROFF = 41726; å¼ºåˆ¶å…³æœº
              SEND_CMD_TIMERPOWERONOFF = 41725; å®šæ—¶å¼€å…³æœº
              SEND_CMD_CANCEL_TIMERPOWERONOFF = 41724; å–消定时开关机
              SEND_CMD_RESIVETIME = 41723; æ ¡æ­£æ—¶é—´ã€‚
              SEND_CMD_ADJUSTLIGHT = 41722; äº®åº¦è°ƒæ•´ã€‚
            nOtherParam1    :保留参数;0
          è¿”回值            :详见返回状态代码定义。
        -------------------------------------------------------------------------------*/
        [DllImport("BX_IV.dll")]
        public static extern int SendScreenInfo(int nScreenNo, int nSendMode, int nSendCmd, int nOtherParam1);//发送相应命令到显示屏。
        /*-------------------------------------------------------------------------------
          è¿‡ç¨‹å:    AddScreenProgram
          å‘动态库中指定显示屏添加节目;该函数不与显示屏通讯,只用于动态库中的指定显示屏节目信息配置。
          å‚æ•°:
            nScreenNo       :显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应。
            nProgramType    :节目类型;0正常节目。
            nPlayLength     :0:表示自动顺序播放;否则表示节目播放的长度;范围1~65535;单位秒
            nStartYear      :节目的生命周期;开始播放时间年份。如果为无限制播放的话该参数值为65535;如2010
            nStartMonth     :节目的生命周期;开始播放时间月份。如11
            nStartDay       :节目的生命周期;开始播放时间日期。如26
            nEndYear        :节目的生命周期;结束播放时间年份。如2011
            nEndMonth       :节目的生命周期;结束播放时间月份。如11
            nEndDay         :节目的生命周期;结束播放时间日期。如26
            nMonPlay        :节目在生命周期内星期一是否播放;0:不播放;1:播放.
            nTuesPlay       :节目在生命周期内星期二是否播放;0:不播放;1:播放.
            nWedPlay        :节目在生命周期内星期二是否播放;0:不播放;1:播放.
            nThursPlay      :节目在生命周期内星期二是否播放;0:不播放;1:播放.
            bFriPlay        :节目在生命周期内星期二是否播放;0:不播放;1:播放.
            nSatPlay        :节目在生命周期内星期二是否播放;0:不播放;1:播放.
            nSunPlay        :节目在生命周期内星期二是否播放;0:不播放;1:播放.
            nStartHour      :节目在当天开始播放时间小时。如8
            nStartMinute    :节目在当天开始播放时间分钟。如0
            nEndHour        :节目在当天结束播放时间小时。如18
            nEndMinute      :节目在当天结束播放时间分钟。如0
          è¿”回值            :详见返回状态代码定义。
        -------------------------------------------------------------------------------*/
        [DllImport("BX_IV.dll")]
        public static extern int AddScreenProgram(int nScreenNo, int nProgramType, int nPlayLength,
            int nStartYear, int nStartMonth, int nStartDay, int nEndYear, int nEndMonth, int nEndDay,
            int nMonPlay, int nTuesPlay, int nWedPlay, int nThursPlay, int bFriPlay, int nSatPlay, int nSunPlay,
            int nStartHour, int nStartMinute, int nEndHour, int nEndMinute); //向指定显示屏添加节目;
        /*-------------------------------------------------------------------------------
          è¿‡ç¨‹å:    DeleteScreenProgram
          åˆ é™¤æŒ‡å®šæ˜¾ç¤ºå±æŒ‡å®šèŠ‚ç›®ï¼Œåˆ é™¤èŠ‚ç›®æˆåŠŸåŽä¼šå°†è¯¥èŠ‚ç›®ä¸‹æ‰€æœ‰åŒºåŸŸä¿¡æ¯åˆ é™¤ã€‚
          è¯¥å‡½æ•°ä¸ä¸Žæ˜¾ç¤ºå±é€šè®¯ï¼Œåªç”¨äºŽåŠ¨æ€åº“ä¸­çš„æŒ‡å®šæ˜¾ç¤ºå±æŒ‡å®šèŠ‚ç›®ä¿¡æ¯é…ç½®ã€‚
          å‚æ•°:
            nScreenNo       :显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应。
            nProgramOrd     :节目序号;该序号按照节目添加顺序,从0顺序递增,如删除中间的节目,后面的节目序号自动填充。
          è¿”回值            :详见返回状态代码定义。
        -------------------------------------------------------------------------------*/
        [DllImport("BX_IV.dll")]
        public static extern int DeleteScreenProgram(int nScreenNo, int nProgramOrd); //删除节目
        /*-------------------------------------------------------------------------------
          è¿‡ç¨‹å:    DeleteScreenProgramArea
          åˆ é™¤æŒ‡å®šæ˜¾ç¤ºå±æŒ‡å®šèŠ‚ç›®çš„æŒ‡å®šåŒºåŸŸï¼Œåˆ é™¤åŒºåŸŸæˆåŠŸåŽä¼šå°†è¯¥åŒºåŸŸä¸‹æ‰€æœ‰ä¿¡æ¯åˆ é™¤ã€‚
          è¯¥å‡½æ•°ä¸ä¸Žæ˜¾ç¤ºå±é€šè®¯ï¼Œåªç”¨äºŽåŠ¨æ€åº“ä¸­æŒ‡å®šæ˜¾ç¤ºå±æŒ‡å®šèŠ‚ç›®ä¸­æŒ‡å®šçš„åŒºåŸŸä¿¡æ¯é…ç½®ã€‚
          å‚æ•°:
            nScreenNo       :显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应。
            nProgramOrd     :节目序号;该序号按照节目添加顺序,从0顺序递增,如删除中间的节目,后面的节目序号自动填充。
            nAreaOrd        :区域序号;该序号按照区域添加顺序,从0顺序递增,如删除中间的区域,后面的区域序号自动填充。
          è¿”回值            :详见返回状态代码定义。
        -------------------------------------------------------------------------------*/
        [DllImport("BX_IV.dll")]
        public static extern int DeleteScreenProgramArea(int nScreenNo, int nProgramOrd, int nAreaOrd);//删除区域
        /*-------------------------------------------------------------------------------
          è¿‡ç¨‹å:    AddScreenProgramBmpTextArea:
          å‘动态库中指定显示屏的指定节目添加图文区域;该函数不与显示屏通讯,只用于动态库中的指定显示屏指定节目中的图文区域信息配置。
          å‚æ•°:
            nScreenNo       :显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应。
            nProgramOrd     :节目序号;该序号按照节目添加顺序,从0顺序递增,如删除中间的节目,后面的节目序号自动填充。
            nX              :区域的横坐标;显示屏的左上角的横坐标为0;最小值为0
            nY              :区域的纵坐标;显示屏的左上角的纵坐标为0;最小值为0
            nWidth          :区域的宽度;最大值不大于显示屏宽度-nX
            nHeight         :区域的高度;最大值不大于显示屏高度-nY
          è¿”回值            :详见返回状态代码定义。
        -------------------------------------------------------------------------------*/
        [DllImport("BX_IV.dll")]
        public static extern int AddScreenProgramBmpTextArea(int nScreenNo, int nProgramOrd, int nX, int nY,
            int nWidth, int nHeight);//向指定显示屏指定节目添加图文区;
        /*-------------------------------------------------------------------------------
          è¿‡ç¨‹å:    AddScreenProgramAreaBmpTextFile
          å‘动态库中指定显示屏的指定节目的指定图文区域添加文件;
              è¯¥å‡½æ•°ä¸ä¸Žæ˜¾ç¤ºå±é€šè®¯ï¼Œåªç”¨äºŽåŠ¨æ€åº“ä¸­çš„æŒ‡å®šæ˜¾ç¤ºå±æŒ‡å®šèŠ‚ç›®ä¸­æŒ‡å®šå›¾æ–‡åŒºåŸŸçš„æ–‡ä»¶ä¿¡æ¯é…ç½®ã€‚
          å‚æ•°:
            nScreenNo       :显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应。
            nProgramOrd     :节目序号;该序号按照节目添加顺序,从0顺序递增,如删除中间的节目,后面的节目序号自动填充。
            nAreaOrd        :区域序号;该序号按照区域添加顺序,从0顺序递增,如删除中间的区域,后面的区域序号自动填充。
            pFileName       :文件名称  æ”¯æŒ.bmp,jpg,jpeg,rtf,txt等文件类型。
            nShowSingle     :单、多行显示;1:单行显示;0:多行显示;该参数只有在pFileName为txt类型文件时该参数才有效。
            pFontName       :字体名称;支持当前操作系统已经安装的矢量字库;该参数只有pFileName为txt类型文件时该参数才有效。
            nFontSize       :字体字号;支持当前操作系统的字号;该参数只有pFileName为txt类型文件时该参数才有效。
            nBold           :字体粗体;支持1:粗体;0:正常;该参数只有pFileName为txt类型文件时该参数才有效。
            nFontColor      :字体颜色;该参数只有pFileName为txt类型文件时该参数才有效。
            nStunt          :显示特技。
              0x00:随机显示
              0x01:静态
              0x02:快速打出
              0x03:向左移动
              0x04:向左连移
              0x05:向上移动            3T类型控制卡无此特技
              0x06:向上连移            3T类型控制卡无此特技
              0x07:闪烁                3T类型控制卡无此特技
              0x08:飘雪
              0x09:冒泡
              0x0A:中间移出
              0x0B:左右移入
              0x0C:左右交叉移入
              0x0D:上下交叉移入
              0x0E:画卷闭合
              0x0F:画卷打开
              0x10:向左拉伸
              0x11:向右拉伸
              0x12:向上拉伸
              0x13:向下拉伸            3T类型控制卡无此特技
              0x14:向左镭射
              0x15:向右镭射
              0x16:向上镭射
              0x17:向下镭射
              0x18:左右交叉拉幕
              0x19:上下交叉拉幕
              0x1A:分散左拉
              0x1B:水平百页            3T、3A、4A、3A1、3A2、4A1、4A2、4A3、4AQ类型控制卡无此特技
              0x1C:垂直百页            3T、3A、4A、3A1、3A2、4A1、4A2、4A3、4AQ、3M、4M、4M1、4MC类型控制卡无此特技
              0x1D:向左拉幕            3T、3A、4A类型控制卡无此特技
              0x1E:向右拉幕            3T、3A、4A类型控制卡无此特技
              0x1F:向上拉幕            3T、3A、4A类型控制卡无此特技
              0x20:向下拉幕            3T、3A、4A类型控制卡无此特技
              0x21:左右闭合            3T类型控制卡无此特技
              0x22:左右对开            3T类型控制卡无此特技
              0x23:上下闭合            3T类型控制卡无此特技
              0x24:上下对开            3T类型控制卡无此特技
              0x25:向右连移
              0x26:向右连移
              0x27:向下移动            3T类型控制卡无此特技
              0x28:向下连移            3T类型控制卡无此特技
            nRunSpeed       :运行速度;0~63;值越大运行速度越慢。
            nShowTime       :停留时间;0~65525;单位0.5秒
          è¿”回值:           :详见返回状态代码定义。
        -------------------------------------------------------------------------------*/
        [DllImport("BX_IV.dll")]
        public static extern int AddScreenProgramAreaBmpTextFile(int nScreenNo, int nProgramOrd, int nAreaOrd,
        string pFileName, int nShowSingle, string pFontName, int nFontSize, int nBold, int nFontColor,
            int nStunt, int nRunSpeed, int nShowTime); //向指定显示屏指定节目指定区域添加文件
        /*-------------------------------------------------------------------------------
          è¿‡ç¨‹å:    DeleteScreenProgramAreaBmpTextFile
          åˆ é™¤æŒ‡å®šæ˜¾ç¤ºå±æŒ‡å®šèŠ‚ç›®æŒ‡å®šå›¾æ–‡åŒºåŸŸçš„æŒ‡å®šæ–‡ä»¶ï¼Œåˆ é™¤æ–‡ä»¶æˆåŠŸåŽä¼šå°†è¯¥æ–‡ä»¶ä¿¡æ¯åˆ é™¤ã€‚
          è¯¥å‡½æ•°ä¸ä¸Žæ˜¾ç¤ºå±é€šè®¯ï¼Œåªç”¨äºŽåŠ¨æ€åº“ä¸­çš„æŒ‡å®šæ˜¾ç¤ºå±æŒ‡å®šèŠ‚ç›®æŒ‡å®šåŒºåŸŸä¸­çš„æŒ‡å®šæ–‡ä»¶ä¿¡æ¯é…ç½®ã€‚
          å‚æ•°:
            nScreenNo       :显示屏屏号;该参数与AddScreen函数中的nScreenNo参数对应。
            nProgramOrd     :节目序号;该序号按照节目添加顺序,从0顺序递增,如删除中间的节目,后面的节目序号自动填充。
            nAreaOrd        :区域序号;该序号按照区域添加顺序,从0顺序递增,如删除中间的区域,后面的区域序号自动填充。
            nFileOrd        :文件序号;该序号按照文件添加顺序,从0顺序递增,如删除中间的文件,后面的文件序号自动填充。
          è¿”回值            :详见返回状态代码定义。
        -------------------------------------------------------------------------------*/
        [DllImport("BX_IV.dll")]
        public static extern int DeleteScreenProgramAreaBmpTextFile(int nScreenNo, int nProgramOrd, int nAreaOrd, int nFileOrd); //删除指定显示屏指定节目指定图文区域的指定文件,删除文件成功后会将该文件信息删除
        [DllImport("BX_IV.dll")]
        public static extern int AddScreenProgramTimeArea(int nScreenNo, int nProgramOrd, int nX, int nY, int nWidth, int nHeight);//向指定显示屏指定节目添加日期时间区;
        [DllImport("BX_IV.dll")]
        public static extern int AddScreenProgramTimeAreaFile(int nScreenNo, int nProgramOrd, int nAreaOrd,
            string pInputtxt, string pFontName, int nSingal, int nAlign, int nFontSize,
            int nBold, int nItalic, int nUnderline, int nUsetxt, int nTxtcolor,
            int nUseymd, int nYmdstyle, int nYmdcolor, int nUseweek, int nWeekstyle, int nWeekcolor,
            int nUsehns, int nHnsstyle, int nHnscolor, int nAutoset); //向指定显示屏指定节目指定区域添加时间文件
        #endregion
        #region ç”»é¢ä¸ŠåŒæ­¥æ˜¾ç¤ºæŽ§ä»¶
        public ListBox responseled;
        public DevComponents.DotNetBar.Controls.TextBoxX tb_sendtoled;
        //public LabelX lb_led;
        delegate void displayresponse(string text);
        delegate void SetTextCallback(string ledText);
        #endregion
        Thread trd = null;
        string ledip = "";
        int ledno = 0;
        int portno = 0;
        /// <summary>
        /// åˆå§‹åŒ–成功标记
        /// </summary>
        bool flag = false;
        //private IPEndPoint ServerInfo;
        //private Socket socket;
        //private Byte[] MsgBuffer = new Byte[65535];
        //private Byte[] MsgSend = new Byte[65535];
        public LedThread(int led_no, string led_ip, int port)
        {
            try
            {
                ledno = led_no;
                ledip = led_ip;
                this.portno = port;
                flag = true;// InitScreen();
                if (flag)
                {
                    trd = new Thread(new ThreadStart(this.ThreadTask));
                    trd.IsBackground = true;
                    trd.Start();
                }
                else
                {
                    Common.WriteLogFile("WcsError", "LedThread/InitScreen--初始化LED" + ledno + "失败");
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "LedThread/LedThread--LED线程启动出错(" + ledno + "):" + em.Message);
            }
        }
        /// <summary>
        /// é”€æ¯
        /// </summary>
        public void Destroy()
        {
            try
            {
                //DeleteScreen(ledno);
            }
            catch (Exception)
            {
            }
        }
        /// <summary>
        /// åˆå§‹åŒ–LED屏幕数据,增加设置屏显,添加节目,添加图文区域
        /// </summary>
        private bool InitScreen()
        {
            bool ret = false;
            try
            {
                int result = 0;
                result = AddScreen(Common.CONTROLLER_TYPE, ledno, Common.SCREEN_WIDTH, Common.SCREEN_HEIGHT, Common.SCREEN_TYPE, Common.SCREEN_PIXELMODE,
                    Common.SCREEN_DATADA, Common.SCREEN_DATAOE, Common.SCREEN_ROWORDER, Common.SCREEN_FREQPAR, Common.SCREEN_COMM, Common.SCREEN_BAUD,
                    ledip, portno, "", 5005, Common.SCREEN_STATUSFILE);
                //DisplayInfo("【" + DateTime.Now.ToString() + "】" + GetErrorMessage("AddScreen", result, ledno + "号屏"));
                result = AddScreenProgram(ledno, 0, 0, 65535, 1, 1, 2050, 12, 31, 1, 1, 1, 1, 1, 1, 1, 0, 0, 23, 59);
                //DisplayInfo("【" + DateTime.Now.ToString() + "】" + GetErrorMessage("AddScreenProgram", result, ledno + "号屏"));
                for (int i = 0; i < 2; i++)
                {
                    string fileName = Application.StartupPath + "\\data\\led" + ledno + "_area" + (i + 1) + ".txt";
                    //UpdateDataFile(fileName,"自动化立体仓储系统");
                    result = AddScreenProgramBmpTextArea(ledno, 0, 0, i * 32, Common.SCREEN_WIDTH, Common.SCREEN_HEIGHT / 2);
                    result = AddScreenProgramAreaBmpTextFile(ledno, 0, i, fileName, 0,
                                                "宋体", 20, 1, 255, 1, 40, 0);
                }
                if (result == 0)
                {
                    ret = true;
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "LedThread/InitScreen--初始化LED" + ledno + "失败:" + em.Message);
            }
            return ret;
        }
        /// <summary>
        /// å‘送数据到LED
        /// </summary>
        private void SendLedData()
        {
            string[] data = Common.gs_led_data[ledno - 1].Split(';');
            //if (data.Length > 7)
            //if ((data.Length == 4 && Common.gi_led_Pages[ledno - 1] == 4)
            //    || (data.Length == 8 && Common.gi_led_Pages[ledno - 1] == 8))
            if (data.Length == 3)
            {
                unsafe
                {
                    uint screen;
                    uint program;
                    uint profile;
                    uint area;
                    //uint area1;
                    //uint area2;
                    //uint area3;
                    //uint area2;
                    uint page;
                    //uint page1;
                    //uint page2;
                    //uint page3;
                    //uint page2;
                    uint red;
                    uint green;
                    uint yellow;
                    uint font;
                    //uint font1;
                    uint factorystyle;
                    uint style;
                    int nResult;
                    nResult = Create_FColor(&red, 255, 0, 0);
                    //nResult = Create_FColor(&green, 0, 055, 0);
                    nResult = Create_FColor(&yellow, 0, 0, 0);
                    //nResult = Create_FFont(&font, "宋体", 12, false);
                    //nResult = Create_FFont(&font, "宋体", 26, false);
                    nResult = Create_BxScreenClient(&screen);
                    nResult = BxScreenClient_connect(screen, ledip, 5005, true);
                    nResult = BxScreen_getProfile(&profile, screen);
                    nResult = Create_ProgramBxFile(&program, 0, profile);
                    nResult = Create_DisplayStyleFactory(&factorystyle);
                    nResult = DisplayStyleFactory_getStyle(&style, factorystyle, 3);
                    for (int i = 0; i < 3; i++)
                    {
                        nResult = Create_FFont(&font, "宋体", 13, false);
                        nResult = Create_TextCaptionBxArea(&area, 0, i * 16, Common.SCREEN_WIDTH, 16, profile);
                        //nResult = Create_TextCaptionBxArea(&area, 0, i * 32, Common.SCREEN_WIDTH, 32, profile);
                        nResult = Create_TextBxPage4(&page, data[i], font, red, yellow);
                        nResult = ProgramBxFile_addArea(program, area);
                        nResult = AbstractTextCaptionBxArea_addPage(area, page);
                        nResult = BxPage_setDisplayStyle(page, style);
                        BxPage_setStayTime(page, 10000);
                    }
                    //if (Common.gi_led_Pages[ledno - 1] == 4)
                    //{
                    //    nResult = DisplayStyleFactory_getStyle(&style, factorystyle, 5);
                    //    for (int i = 0; i < Common.gi_led_Pages[ledno - 1]; i++)
                    //    {
                    //        nResult = Create_FFont(&font, "宋体", 12, false);
                    //        //nResult = Create_TextCaptionBxArea(&area, 0, i * 16, Common.SCREEN_WIDTH, 16, profile);
                    //        nResult = Create_TextCaptionBxArea(&area, 0, i * 32, Common.SCREEN_WIDTH, 32, profile);
                    //        nResult = Create_TextBxPage4(&page, data[i], font, red, yellow);
                    //        nResult = ProgramBxFile_addArea(program, area);
                    //        nResult = AbstractTextCaptionBxArea_addPage(area, page);
                    //        nResult = BxPage_setDisplayStyle(page, style);
                    //        BxPage_setStayTime(page, 15000);
                    //    }
                    //}
                    //else if (Common.gi_led_Pages[ledno - 1] == 8)
                    //{
                    //    nResult = DisplayStyleFactory_getStyle(&style, factorystyle, 3);
                    //    for (int i = 0; i < Common.gi_led_Pages[ledno - 1]; i++)
                    //    {
                    //        nResult = Create_FFont(&font, "宋体", 11, false);
                    //        nResult = Create_TextCaptionBxArea(&area, 0, i * 16, Common.SCREEN_WIDTH, 16, profile);
                    //        //nResult = Create_TextCaptionBxArea(&area, 0, i * 32, Common.SCREEN_WIDTH, 32, profile);
                    //        nResult = Create_TextBxPage4(&page, data[i], font, red, yellow);
                    //        nResult = ProgramBxFile_addArea(program, area);
                    //        nResult = AbstractTextCaptionBxArea_addPage(area, page);
                    //        nResult = BxPage_setDisplayStyle(page, style);
                    //        BxPage_setStayTime(page, 15000);
                    //    }
                    //}
                    nResult = BxScreen_writeProgram(screen, program);
                    if (nResult == 0)
                    {
                        //DisplayInfo("【" + DateTime.Now.ToString() + "】发送数据到LED" + ledno + "成功:" + data[0] + " " + data[1] + " " + data[2] + " " + data[3]);
                        DisplayInfo("【" + DateTime.Now.ToString() + "】发送数据到LED" + ledno + "成功:" + Common.gs_led_data[ledno - 1]);
                        Common.gs_led_data[ledno - 1] = "";
                        ResetLedText("");
                    }
                    else
                    {
                        DisplayInfo("【" + DateTime.Now.ToString() + "】发送数据到LED" + ledno + "失败:" + GetErrorMessage("发送数据(SendScreenInfo)", nResult, ledno + "号屏"));
                        Common.WriteLogFile("WcsError", GetErrorMessage("发送数据(SendScreenInfo)", nResult, ledno + "号屏"));
                    }
                    nResult = BxScreen_disconnect(screen);
                }
                //string fileName1 = Application.StartupPath + "\\data\\led" + ledno + "_area1.txt";
                //string fileName2 = Application.StartupPath + "\\data\\led" + ledno + "_area2.txt";
                //UpdateDataFile(fileName1, data[0]);
                //UpdateDataFile(fileName2, data[1]);
            }
            else
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】待发送数据格式错误,屏号" + ledno + ",内容:" + Common.gs_led_data[ledno - 1]);
                Common.gs_led_data[ledno - 1] = "";
                return;
            }
            //if (Common.m_bSendBusy == false)
            //{
            //    Common.m_bSendBusy = true;
            //    int result = SendScreenInfo(ledno, Common.SCREEN_SENDMODE, Common.SENDALLPROGRAM, 0);
            //    //Common.WriteLogFile("WcsError", GetErrorMessage("发送数据(SendScreenInfo)", result, ledno + "号屏"));
            //    //DisplayInfo(global.GetErrorMessage("发送数据", result, screenno + "号屏(" + SCREEN_SOCKETIP + ")") + "\r\n");
            //    if (result == 0)
            //    {
            //        DisplayInfo("【" + DateTime.Now.ToString() + "】发送数据到LED" + ledno + "成功:" + data);
            //        Common.gs_led_data[ledno - 1] = "";
            //        ResetLedText("");
            //    }
            //    else
            //    {
            //        DisplayInfo("【" + DateTime.Now.ToString() + "】发送数据到LED" + ledno + "失败:" + GetErrorMessage("发送数据(SendScreenInfo)", result, ledno + "号屏"));
            //        Common.WriteLogFile("WcsError", GetErrorMessage("发送数据(SendScreenInfo)", result, ledno + "号屏"));
            //    }
            //    Common.m_bSendBusy = false;
            //}
        }
        #region é€šè®¯åé¦ˆåŒæ­¥æ˜¾ç¤º
        /// <summary>
        /// æ˜¾ç¤ºæ¡ç é€šè®¯ä¿¡æ¯
        /// </summary>
        /// <param name="text"></param>
        private void DisplayInfo(string text)
        {
            if (responseled == null)
            {
                return;
            }
            if (responseled.InvokeRequired)
            {
                try
                {
                    displayresponse d = new displayresponse(DisplayInfo);
                    responseled.Invoke(d, new object[] { text });
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "LedThread/DisplayInfo--同步显示LED发送信息失败:" + em.Message);
                }
            }
            else
            {
                if (responseled.Items.Count > 12)
                {
                    responseled.Items.Clear();
                }
                responseled.Items.Add(text);
            }
        }
        /// <summary>
        /// æ¸…空界面led内容显示
        /// </summary>
        /// <param name="text"></param>
        private void ResetLedText(string ledtext)
        {
            if (tb_sendtoled == null)
            {
                return;
            }
            if (tb_sendtoled.InvokeRequired)
            {
                try
                {
                    SetTextCallback d = new SetTextCallback(ResetLedText);
                    tb_sendtoled.Invoke(d, new object[] { ledtext });
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "LedThread/ResetLedText--清空界面LED显示内容失败:" + em.Message);
                }
            }
            else
            {
                tb_sendtoled.Text = ledtext;
            }
        }
        #endregion
        /// <summary>
        /// æ›´æ–°txt文件
        /// </summary>
        private bool UpdateDataFile(string FileName, string content)
        {
            bool result = false;
            try
            {
                if (File.Exists(FileName))
                {
                    File.Delete(FileName);
                }
                FileStream fs1 = new FileStream(FileName, FileMode.Create, FileAccess.Write);//创建写入文件
                StreamWriter sw = new StreamWriter(fs1, System.Text.Encoding.GetEncoding("GB2312"));
                //StreamWriter sw = new StreamWriter(fs1, System.Text.Encoding.GetEncoding("UTF-8"));
                sw.WriteLine(content);//开始写入值
                sw.Close();
                fs1.Close();
                result = true;
            }
            catch (Exception)
            {
            }
            return result;
        }
        /// <summary>
        /// æŽ§åˆ¶å¡è¿”回信息
        /// </summary>
        /// <returns></returns>
        private string GetErrorMessage(string szfunctionName, int nResult, string screen)
        {
            string szResult;
            DateTime dt = DateTime.Now;
            //szResult = "【" + screen + dt.ToString() + "】" + szfunctionName + "返回结果:";
            szResult = "返回结果:";
            switch (nResult)
            {
                case 0xF7:
                    szResult += "区域类型错误,在添加、删除图文区域文件时区域类型出错返回此类型错误";
                    break;
                case 0xF8:
                    szResult += "已经有该显示屏信息。如要重新设定请先DeleteScreen删除该显示屏再添加";
                    break;
                case 0xF9:
                    szResult += "没有找到有效的区域文件(图文区域)";
                    break;
                case 0xFA:
                    szResult += "没有找到有效的显示区域可以使用AddScreenProgramBmpTextArea添加区域信息";
                    break;
                case 0xFB:
                    szResult += "没有找到有效的显示屏节目可以使用AddScreenProgram函数添加指定节目";
                    break;
                case 0xFC:
                    szResult += "系统内没有查找到该显示屏可以使用AddScreen函数添加显示屏";
                    break;
                case 0xFD:
                    szResult += "系统内正在向该显示屏通讯,请稍后再通讯";
                    break;
                case 0xFF:
                    szResult += "其它错误";
                    break;
                case 0:
                    szResult += "函数执行/通讯成功";
                    break;
                case 0x01:
                    szResult += "通讯错误";
                    break;
                case 0x02:
                    szResult += "通讯错误";
                    break;
                case 0x03:
                    szResult += "通讯错误";
                    break;
                case 0x04:
                    szResult += "通讯错误";
                    break;
                case 0x05:
                    szResult += "通讯错误";
                    break;
                case 0x06:
                    szResult += "通讯错误";
                    break;
                case 0x07:
                    szResult += "通讯错误";
                    break;
                case 0x08:
                    szResult += "通讯错误";
                    break;
                case 0x09:
                    szResult += "通讯错误";
                    break;
                case 0x0A:
                    szResult += "通讯错误";
                    break;
                case 0x0B:
                    szResult += "通讯错误";
                    break;
                case 0x0C:
                    szResult += "通讯错误";
                    break;
                case 0x0D:
                    szResult += "通讯错误";
                    break;
                case 0x0E:
                    szResult += "通讯错误";
                    break;
                case 0x0F:
                    szResult += "通讯错误";
                    break;
                case 0x10:
                    szResult += "通讯错误";
                    break;
                case 0x11:
                    szResult += "通讯错误";
                    break;
                case 0x12:
                    szResult += "通讯错误";
                    break;
                case 0x13:
                    szResult += "通讯错误";
                    break;
                case 0x14:
                    szResult += "通讯错误";
                    break;
                case 0x15:
                    szResult += "通讯错误";
                    break;
                case 0x16:
                    szResult += "通讯错误";
                    break;
                case 0x17:
                    szResult += "通讯错误";
                    break;
                case 0x18:
                    szResult += "通讯错误";
                    break;
                case 0xFE:
                    szResult += "通讯错误";
                    break;
            }
            return szResult;
        }
        /// <summary>
        /// LED主线程
        /// </summary>
        private void ThreadTask()
        {
            //if (flag)
            //{
            //    DisplayInfo("【" + DateTime.Now.ToString() + "】初始化" + ledno + "号屏成功");
            //}
            while (true)
            {
                if (Common.gs_led_data[ledno - 1] != "")
                {
                    SendLedData();
                }
                Thread.Sleep(Common.ci_LedtimeInterval);
            }
        }
    }
    public class ONBON_CALLBACK
    {
    }
}
version/STWCSMapEditor/WCS/PlcAThread.cs
New file
@@ -0,0 +1,1435 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
using System.Threading;
using System.Net.NetworkInformation;
using DevComponents.DotNetBar;
using System.Runtime.InteropServices;
using System.Data;
using com.force.json;
using HslCommunication.Profinet.Siemens;
using HslCommunication;
using HslCommunication.Core.Net;
namespace WCS
{
    /// <summary>
    /// PLCA线程
    /// </summary>
    class PlcAThread
    {
        //NetworkStream myNetworkStream;
        //Thread thr = null;
        delegate void displayresponse(string text);
        //delegate void displayinseresponse(int val);
        string recvStr = "";
        string plcip = "";
        int plcno = 0;
        Thread trd = null;
        int i_plc_step = 0;
        int plcport = 0;
        main form1;
        public static string plc_cmd = "";
        //delegate void SetTextCallback(string text);
        delegate void DisplayData(int type, int i);
        //delegate void DisplayQuereData(int count);
        delegate void DisplaySendTxtInfo(string info);
        //delegate void DisplayErrData(int i);
        //delegate void DisplayDataBuffer(int k);
        private SiemensS7Net siemensTcpNet = null;
        private OperateResult connect = null;
        #region ç”»é¢ä¸ŠåŒæ­¥æ˜¾ç¤ºæŽ§ä»¶
        public ListView plclist;
        //public ListView plcbuflist;
        //public DevComponents.DotNetBar.SuperGrid.SuperGridControl plcbuflist;
        public ListBox tb;
        //public LabelX lb_backMsg;
        //public DevComponents.DotNetBar.LabelX querecount;
        //public ListView errlist;
        public LabelX sendtoplc;
        //public DevComponents.DotNetBar.PanelEx os;
        //public Panel os;
        //public Microsoft.VisualBasic.PowerPacks.OvalShape mvpo;
        #endregion
        public PlcAThread(int plc_no, string plc_ip, int port, main f)
        {
            try
            {
                plcno = plc_no;
                plcip = plc_ip;
                plcport = port;
                form1 = f;
                siemensTcpNet = new SiemensS7Net(SiemensPLCS.S1200);
                siemensTcpNet.IpAddress = this.plcip;
                siemensTcpNet.Port = this.plcport;
                siemensTcpNet.Rack = 0;
                siemensTcpNet.Slot = 0;
                siemensTcpNet.ConnectClose();
                trd = new Thread(new ThreadStart(this.ThreadTask));
                trd.IsBackground = true;
                trd.Start();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "PlcAThread/PlcThread--PLC线程启动出错:" + em.Message);
            }
        }
        /// <summary>
        /// æ–­å¼€è¿žæŽ¥åŽï¼Œé‡æ–°è¿žæŽ¥
        /// </summary>
        /// <returns></returns>
        private bool ReConnect()
        {
            bool result = false;
            try
            {
                siemensTcpNet.ConnectClose();
                connect = siemensTcpNet.ConnectServer();
                if (connect.IsSuccess)
                {
                    result = true;
                    DisplayInfo("【" + DateTime.Now.ToString() + "】PLCA重新连接PLC成功 ");
                }
                else
                {
                    DisplayInfo("【" + DateTime.Now.ToString() + "】PLCA重新连接PLC失败---" + connect.ToMessageShowString());
                }
            }
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】PLCA重新连接PLC失败---" + em.Message);
            }
            return result;
        }
        /// <summary>
        /// æ ¹æ®å‘½ä»¤å­—符串判断作业类型
        /// </summary>
        private void CommandStr_nkindstep()
        {
            int i = 0;
            try
            {
                if (plc_cmd == null || plc_cmd == "")
                {
                    i = 1;
                }
                else
                {
                    i = Convert.ToInt32(plc_cmd.Substring(0, 2));
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "PlcAThread/CommandStr_nkindstep--根据命令字符串判断作业类型出错:" + em.Message);
                return;
            }
            switch (i)
            {
                case 1:
                    i_plc_step = 1;
                    break;
                case 2:
                    i_plc_step = 2;
                    break;
                case 3:
                    i_plc_step = 3;
                    break;
                case 4:
                    i_plc_step = 4;
                    break;
                case 5://清buffer
                    i_plc_step = 5;
                    break;
                case 6://插单
                    i_plc_step = 6;
                    break;
                default:
                    i_plc_step = 1;
                    break;
            }
        }
        /////////////////////////////////////---------------------------------------读plc中字-----------------------------
        /// <summary>
        /// è¯»PLC id
        /// </summary>
        private void GetStaIdArea()
        {
            string s_plchead = "", s_chksum = "", s_SendString = "";
            string s_RecStr = "", s_startadd = "", s_len = "";
            byte[] buf = new byte[12];
            byte[] buf1 = new byte[500];
            byte[] content = new byte[200];
            int n = 0, num = 0, num1 = 0, k = 0, pi_return = 0, i_startadd = 0, i_len = 0, i_val = 0;
            byte[] bte_value = new byte[4];
            byte[] bte_addr = new byte[2];
            s_RecStr = "";
            recvStr = "";
            try
            {
                s_startadd = "DB100.0";     //读取堆垛机状态起始地址
                i_len = 60;                 //读取堆垛机状态地址长度
                OperateResult<byte[]> read = siemensTcpNet.Read(s_startadd, (ushort)i_len);
                if (read.IsSuccess)
                {
                    for (int i = 0; i < 10; i++)     //站点数
                    {
                        num = siemensTcpNet.ByteTransform.TransInt16(read.Content, i * 4);
                        Common.plc_i_Wrk_no[plcno - 1, i] = num;  //ID
                        DisplayPLCDataInfo(1, i);
                        recvStr = recvStr + num.ToString();
                        num = siemensTcpNet.ByteTransform.TransInt16(read.Content, 2 + (i * 4));
                        Common.plc_s_next_stn[plcno - 1, i] = num.ToString();  //目标
                        DisplayPLCDataInfo(3, i);
                        recvStr = recvStr + num.ToString();
                    }
                    bool[] stsArray = siemensTcpNet.ByteTransform.TransBool(read.Content, 60, 10); //地址起始长度,站点数
                    for (int j = 0; j < 10; j++)     //状态
                    {
                        int i = j;
                        if (stsArray[j * 8])
                        {
                            Common.plc_s_autoing[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_autoing[plcno - 1, i] = "N";
                        }
                        if (stsArray[j * 8 + 1])
                        {
                            Common.plc_s_loading[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_loading[plcno - 1, i] = "N";
                            //出现过无物情况清除plc_i_pakmk标记,通过判断plc_i_pakmk标记,防止重复下指令
                            Common.plc_i_pakmk[plcno - 1, i] = 0;
                        }
                        if (stsArray[j * 8 + 2])
                        {
                            Common.plc_s_canining[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_canining[plcno - 1, i] = "N";
                        }
                        if (stsArray[j * 8 + 3])
                        {
                            Common.plc_s_canouting[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_canouting[plcno - 1, i] = "N";
                        }
                        if (stsArray[j * 8 + 4])
                        {
                            Common.plc_s_inreq1[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_inreq1[plcno - 1, i] = "N";
                        }
                        if (stsArray[j * 8 + 5])
                        {
                            Common.plc_s_inreq2[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_inreq2[plcno - 1, i] = "N";
                        }
                        if (stsArray[j * 8 + 6])
                        {
                            Common.plc_s_loctype[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_loctype[plcno - 1, i] = "N";
                        }
                        DisplayPLCDataInfo(2, i);
                        recvStr = recvStr + num.ToString();
                    }
                    //读取条码
                    string i_barcode = "";
                    for (int i = 0; i < Common.ci_barcode_count; i++)    //BarCODE
                    {
                        if (i == 0)
                        {
                            OperateResult<byte[]> barcode = siemensTcpNet.Read("DB100.90", (byte)8);
                            i_barcode = Encoding.UTF8.GetString(barcode.Content);
                        }
                        else
                        {
                            OperateResult<byte[]> barcode = siemensTcpNet.Read("DB100.98", (byte)8);
                            i_barcode = Encoding.UTF8.GetString(barcode.Content);
                        }
                        Common.gs_barcode_data[i] = i_barcode;
                        //i_barcode  = ParseSource(barcode.Content);
                        //i_barcode = siemensTcpNet.ByteTransform.TransString(barcode.Content, i * 8, 8,UTF8 );
                        //i_barcode = Encoding.UTF8.GetString(barcode.Content);
                        //long i_barcode = siemensTcpNet.ByteTransform.TransInt32(read.Content, 86 + (i * 4));
                        //Common.gs_barcode_data[i] = i_barcode;
                    }
                    #region  å°è½¦
                    //for (int j = 48; j < 50; j++)     //状态
                    //{
                    //    int i = j - 48;
                    //    num = siemensTcpNet.ByteTransform.TransInt16(read.Content, 48 + i * 2);
                    //    if (j == 48)        //台车位置
                    //    {
                    //        Common.gi_RGVPos[0] = num;
                    //    }
                    //    if (j == 49)        //心跳
                    //    {
                    //        int heartBeat = num;
                    //        if (heartBeat != 2)
                    //        {
                    //            heartBeat = 2;
                    //        }
                    //        else
                    //        {
                    //            heartBeat = 1;
                    //        }
                    //        OperateResult result = siemensTcpNet.Write("DB100.50", (short)heartBeat);
                    //    }
                    //}
                    #endregion
                    DisplayInfo("【" + DateTime.Now.ToString() + "】扫描PLCA数据--" + recvStr);//同步显示
                }
                else
                {
                    DisplayInfo("【" + DateTime.Now.ToString() + "】扫描PLCA数据失败:" + read.ToMessageShowString());
                }
            }
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】" + plcno + "#读取站点ID失败: " + em.Message);//同步显示
                Common.WriteLogFile("WcsError", "PlcAThread/GetStaIdArea--读取站点ID失败:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// è¯»å–PLC设备状态地址值
        /// </summary>
        private void GetStaStsArea()
        {
            string s_plchead = "", s_chksum = "", s_SendString = "";
            string s_RecStr = "", s_startadd = "", s_len = "";
            byte[] buf = new byte[12];
            byte[] buf1 = new byte[500];
            byte[] content = new byte[100];
            int n = 0, num = 0, num1 = 0, k = 0, pi_return = 0, i_startadd = 0, i_len = 0, i_val = 0;
            byte[] bte_value = new byte[4];
            byte[] bte_addr = new byte[2];
            int l = 0;
            s_RecStr = "";
            recvStr = "";
            try
            {
                s_startadd = "DB100.60";       //读取堆垛机状态起始地址
                i_len = 10;                 //读取堆垛机状态地址长度
                OperateResult<byte[]> read = siemensTcpNet.Read(s_startadd, (ushort)i_len);
                if (read.IsSuccess)
                {
                    bool[] stsArray = siemensTcpNet.ByteTransform.TransBool(read.Content, 0, 10);
                    for (int i = 0; i < 11; i++)     //状态
                    {
                        if (stsArray[i * 8])
                        {
                            Common.plc_s_autoing[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_autoing[plcno - 1, i] = "N";
                        }
                        if (stsArray[i * 8 + 1])
                        {
                            Common.plc_s_loading[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_loading[plcno - 1, i] = "N";
                            //出现过无物情况清除plc_i_pakmk标记,通过判断plc_i_pakmk标记,防止重复下指令
                            Common.plc_i_pakmk[plcno - 1, i] = 0;
                        }
                        if (stsArray[i * 8 + 2])
                        {
                            Common.plc_s_canining[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_canining[plcno - 1, i] = "N";
                        }
                        if (stsArray[i * 8 + 3])
                        {
                            Common.plc_s_canouting[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_canouting[plcno - 1, i] = "N";
                        }
                        if (stsArray[i * 8 + 4])
                        {
                            Common.plc_s_inreq1[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_inreq1[plcno - 1, i] = "N";
                        }
                        if (stsArray[i * 8 + 5])
                        {
                            Common.plc_s_inreq2[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_inreq2[plcno - 1, i] = "N";
                        }
                        if (stsArray[i * 8 + 6])
                        {
                            Common.plc_s_loctype[plcno - 1, i] = "Y";
                        }
                        else
                        {
                            Common.plc_s_loctype[plcno - 1, i] = "N";
                        }
                        //buf1 = read.Content;
                        //num = 256 * (int)buf1[i * 2] + (int)buf1[i * 2 + 1];
                        //AnalyseStaStatus(i, num);
                        DisplayPLCDataInfo(2, i);
                        recvStr = recvStr + num.ToString();
                    }
                    DisplayInfo("【" + DateTime.Now.ToString() + "】扫描PLCA状态--" + recvStr);//同步显示
                }
                else
                {
                    DisplayInfo("【" + DateTime.Now.ToString() + "】扫描PLCA状态失败:" + read.ToMessageShowString());
                }
                #region  æ–½è€å¾·
                //Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                //try
                //{
                //    socket.Connect(plcip, plcport);
                //    i_startadd = 3001;  //3001  //模拟器代表地址1001开始,程序中必须实际地址-1  ï¼Œ#0+#$64表示读100个地址
                //    s_startadd = i_startadd.ToString("X4");
                //    bte_value[0] = (byte)Convert.ToInt32(s_startadd.Substring(0, 2), 16);
                //    bte_value[1] = (byte)Convert.ToInt32(s_startadd.Substring(2, 2), 16);
                //    //统一格式,读地址长度
                //    i_len = 13;              //目前最长读125个
                //    s_len = i_len.ToString("X4");
                //    bte_value[2] = (byte)Convert.ToInt32(s_len.Substring(0, 2), 16);
                //    bte_value[3] = (byte)Convert.ToInt32(s_len.Substring(2, 2), 16);
                //    ////发送格式
                //    //#0+#1+#0+#0+#0+#$15+#$FF+#$10+chr(bte1[1])+chr(bte1[2])+#0+#$7+#$E+chr(bte[1])+chr(bte[2])+chr(bte[3])+chr(bte[4])+chr(bte[5])+chr(bte[6])+chr(bte[7])+chr(bte[8])+chr(bte[9])+chr(bte[10])+chr(bte[11])+chr(bte[12])+chr(bte[13])+chr(bte[14]);
                //    //s_SendString = GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(6) + " " + GetStringByASCII(3) + GetStringByASCII(bte_value[0]) + GetStringByASCII(bte_value[1]) + GetStringByASCII(bte_value[2]) + GetStringByASCII(bte_value[3]);
                //    buf[0] = (byte)(0);
                //    buf[1] = (byte)(0);
                //    buf[2] = (byte)(0);
                //    buf[3] = (byte)(0);
                //    buf[4] = (byte)(0);
                //    buf[5] = (byte)(6);
                //    buf[6] = (byte)(32);
                //    buf[7] = (byte)(3);
                //    buf[8] = (byte)(bte_value[0]);
                //    buf[9] = (byte)(bte_value[1]);
                //    buf[10] = (byte)(bte_value[2]);
                //    buf[11] = (byte)(bte_value[3]);
                //    socket.Send(buf, buf.Length, 0);
                //    int bytes = 0;
                //    bytes = socket.Receive(buf1, buf1.Length, 0);
                //    socket.Close();
                //    Thread.Sleep(Common.ci_PLCtimeInterval);
                //    for (int i = 0; i < 13; i++)
                //    {
                //        try
                //        {
                //            num = 256 * (int)buf1[i * 2 + 9] + (int)buf1[i * 2 + 10];
                //            j = i;
                //        }
                //        catch (Exception r)
                //        {
                //            num = 0;
                //        }
                //        recvStr = recvStr + num.ToString();
                //        AnalyseStaStatus(j, num);
                //        DisplayPLCDataInfo(2, j);
                //        // ChkCrnSts(i, num);
                //    }
                //    DisplayInfo("【" + DateTime.Now.ToString() + "】扫描状态1--" + recvStr);//同步显示
                //}
                //catch (Exception t)
                //{
                //    DisplayInfo("【" + DateTime.Now.ToString() + "】扫描状态1失败:" + t.Message);//同步显示
                //    //Nondisstnsts();
                //    //for (int h = 0; h < 27; h++)
                //    //{
                //    //   DisplayPLCDataInfo(2, h);
                //    //}
                //    socket.Close();
                //    return;
                //}
#endregion
            }
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】" + plcno + "#读取站点状态失败: " + em.Message);//同步显示
                Common.WriteLogFile("WcsError", "PlcAThread/GetStaStsArea--读取站点状态失败:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// åˆ†æžç«™ç‚¹å„状态
        /// </summary>
        /// <param name="i">站点序列</param>
        /// <param name="num">状态值</param>
        private void AnalyseStaStatus(int i, int num)
        {
            try
            {
                if (Common.fun_ChkAndByte(num, Common.ch_d1) == true)
                {
                    Common.plc_s_autoing[plcno - 1, i] = "Y";
                }
                else
                {
                    Common.plc_s_autoing[plcno - 1, i] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d2) == true)
                {
                    Common.plc_s_loading[plcno - 1, i] = "Y";
                }
                else
                {
                    Common.plc_s_loading[plcno - 1, i] = "N";
                    //出现过无物情况清除plc_i_pakmk标记,通过判断plc_i_pakmk标记,防止重复下指令
                    Common.plc_i_pakmk[plcno - 1, i] = 0;
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d3) == true)
                {
                    Common.plc_s_canining[plcno - 1, i] = "Y";
                }
                else
                {
                    Common.plc_s_canining[plcno - 1, i] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d4) == true)
                {
                    Common.plc_s_canouting[plcno - 1, i] = "Y";
                }
                else
                {
                    Common.plc_s_canouting[plcno - 1, i] = "N";
                    Common.plc_i_pakmk[plcno - 1, i] = 0;
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d5) == true)
                {
                    Common.plc_s_inreq1[plcno - 1, i] = "Y";
                }
                else
                {
                    Common.plc_s_inreq1[plcno - 1, i] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d6) == true)
                {
                    Common.plc_s_inreq2[plcno - 1, i] = "Y";
                }
                else
                {
                    Common.plc_s_inreq2[plcno - 1, i] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d7) == true)
                {
                    Common.plc_s_loctype[plcno - 1, i] = "Y";
                }
                else
                {
                    Common.plc_s_loctype[plcno - 1, i] = "N";
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "PlcThread/AnalyseStaStatus1--扫描站点状态字失败:" + em.Message);
            }
        }
        #region è®¾å¤‡å¼‚常
        /// <summary>
        /// å¾—到设备异常
        /// </summary>
        private void GetStaErrArea1()
        {
            string s_plchead = "", s_chksum = "", s_SendString = "";
            string s_RecStr = "", s_startadd = "", s_len = "";
            byte[] buf = new byte[12];
            byte[] buf1 = new byte[500];
            byte[] content = new byte[100];
            int n = 0, num = 0, num1 = 0, k = 0, pi_return = 0, i_startadd = 0, i_len = 0, i_val = 0;
            byte[] bte_value = new byte[4];
            byte[] bte_addr = new byte[2];
            s_RecStr = "";
            recvStr = "";
            int seq = 0;
            try
            {
                //s_startadd = "DB101.4";         //读取堆垛机状态起始地址
                //i_len = 12;                 //读取堆垛机状态地址长度
                //OperateResult<byte[]> read = siemensTcpNet.Read(s_startadd, (ushort)i_len);
                //if (read.IsSuccess)
                //{
                //    bool[] StaErr = siemensTcpNet.ByteTransform.TransBool(read.Content,0, 12); //地址起始长度,站点数
                //    for (int i = 0; i < 96; i++)
                //    {
                //        Common.plcerr[i] = StaErr[i] ? "Y" : "N";
                //    }
                //}
                s_startadd = "DB101.4";         //读取堆垛机状态起始地址
                i_len = 4;                 //读取堆垛机状态地址长度
                OperateResult<byte[]> read = siemensTcpNet.Read(s_startadd, (ushort)i_len);
                if (read.IsSuccess)
                {
                    bool[] StaErr = siemensTcpNet.ByteTransform.TransBool(read.Content, 0, 4); //地址起始长度,站点数
                    for (int i = 0; i < 27; i++)
                    {
                        Common.plcerr[i] = StaErr[i] ? "Y" : "N";
                    }
                }
                s_startadd = "DB101.12";         //读取堆垛机状态起始地址
                i_len = 4;                 //读取堆垛机状态地址长度
                OperateResult<byte[]> read1 = siemensTcpNet.Read(s_startadd, (ushort)i_len);
                if (read1.IsSuccess)
                {
                    bool[] StaErr = siemensTcpNet.ByteTransform.TransBool(read1.Content, 0, 4); //地址起始长度,站点数
                    for (int i = 0; i < 27; i++)
                    {
                        Common.plcerr[i + 27] = StaErr[i] ? "Y" : "N";
                    }
                }
            }
            #region  æ–½è€å¾·
            //try
            //{
            //    Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //    socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            //    try
            //    {
            //        socket.Connect(plcip, plcport);
            //        i_startadd = 800;  //模拟器代表地址1001开始,程序中必须实际地址-1  ï¼Œ#0+#$64表示读100个地址
            //        s_startadd = i_startadd.ToString("X4");
            //        bte_value[0] = (byte)Convert.ToInt32(s_startadd.Substring(0, 2), 16);
            //        bte_value[1] = (byte)Convert.ToInt32(s_startadd.Substring(2, 2), 16);
            //        //统一格式,读地址长度
            //        i_len = 4;              //目前最长读125个
            //        s_len = i_len.ToString("X4");
            //        bte_value[2] = (byte)Convert.ToInt32(s_len.Substring(0, 2), 16);
            //        bte_value[3] = (byte)Convert.ToInt32(s_len.Substring(2, 2), 16);
            //        ////发送格式
            //        //#0+#1+#0+#0+#0+#$15+#$FF+#$10+chr(bte1[1])+chr(bte1[2])+#0+#$7+#$E+chr(bte[1])+chr(bte[2])+chr(bte[3])+chr(bte[4])+chr(bte[5])+chr(bte[6])+chr(bte[7])+chr(bte[8])+chr(bte[9])+chr(bte[10])+chr(bte[11])+chr(bte[12])+chr(bte[13])+chr(bte[14]);
            //        //s_SendString = GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(6) + " " + GetStringByASCII(3) + GetStringByASCII(bte_value[0]) + GetStringByASCII(bte_value[1]) + GetStringByASCII(bte_value[2]) + GetStringByASCII(bte_value[3]);
            //        buf[0] = (byte)(0);
            //        buf[1] = (byte)(0);
            //        buf[2] = (byte)(0);
            //        buf[3] = (byte)(0);
            //        buf[4] = (byte)(0);
            //        buf[5] = (byte)(6);
            //        buf[6] = (byte)(32);
            //        buf[7] = (byte)(3);
            //        buf[8] = (byte)(bte_value[0]);
            //        buf[9] = (byte)(bte_value[1]);
            //        buf[10] = (byte)(bte_value[2]);
            //        buf[11] = (byte)(bte_value[3]);
            //        socket.Send(buf, buf.Length, 0);
            //        int bytes = 0;
            //        bytes = socket.Receive(buf1, buf1.Length, 0);
            //        socket.Close();
            //        Thread.Sleep(Common.ci_PLCtimeInterval);
            //        for (int i = 0; i < 4; i++)
            //        {
            //            try
            //            {
            //                num = 256 * (int)buf1[i * 2 + 9] + (int)buf1[i * 2 + 10];
            //                if (i == 0)
            //                {
            //                    Common.gi_RGVPos[0] = num;
            //                }
            //                else
            //                {
            //                    AnalyseStaErr1(i - 1, num);
            //                }
            //            }
            //            catch (Exception r)
            //            {
            //                num = 0;
            //            }
            //            recvStr = recvStr + num.ToString();
            //        }
            //        DisplayInfo("【" + DateTime.Now.ToString() + "】扫描设备异常1--" + recvStr);//同步显示
            //        //禁用Socket
            //        ////socket.Shutdown(SocketShutdown.Both);
            //        ////socket.Disconnect(true);
            //        //socket.Close();
            //    }
            //    catch (Exception t)
            //    {
            //        DisplayInfo("【" + DateTime.Now.ToString() + "】扫描设备异常1失败:" + t.Message);//同步显示
            //        //Nondisstnsts();
            //        //socket.Shutdown(SocketShutdown.Both);
            //        //socket.Disconnect(true);
            //        socket.Close();
            //        return;
            //    }
            //}
            #endregion
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】" + plcno + "#读取设备异常失败: " + em.Message);//同步显示
                Common.WriteLogFile("WcsError", "PlcAThread/GetStaStsArea--读取设备异常失败:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// åˆ†æžç«™ç‚¹å¼‚常
        /// </summary>
        /// <param name="i">站点序列</param>
        /// <param name="num">异常值</param>
        private void AnalyseStaErr1(int i, int num)
        {
            try
            {
                if (Common.fun_ChkAndByte(num, Common.ch_d1) == true)
                {
                    Common.plcerr[i * 16 + 0] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 0] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d2) == true)
                {
                    Common.plcerr[i * 16 + 1] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 1] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d3) == true)
                {
                    Common.plcerr[i * 16 + 2] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 2] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d4) == true)
                {
                    Common.plcerr[i * 16 + 3] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 3] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d5) == true)
                {
                    Common.plcerr[i * 16 + 4] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 4] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d6) == true)
                {
                    Common.plcerr[i * 16 + 5] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 5] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d7) == true)
                {
                    Common.plcerr[i * 16 + 6] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 6] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d8) == true)
                {
                    Common.plcerr[i * 16 + 7] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 7] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d9) == true)
                {
                    Common.plcerr[i * 16 + 8] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 8] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d10) == true)
                {
                    Common.plcerr[i * 16 + 9] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 9] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d11) == true)
                {
                    Common.plcerr[i * 16 + 10] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 10] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d12) == true)
                {
                    Common.plcerr[i * 16 + 11] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 11] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d13) == true)
                {
                    Common.plcerr[i * 16 + 12] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 12] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d14) == true)
                {
                    Common.plcerr[i * 16 + 13] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 13] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d15) == true)
                {
                    Common.plcerr[i * 16 + 14] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 14] = "N";
                }
                if (Common.fun_ChkAndByte(num, Common.ch_d16) == true)
                {
                    Common.plcerr[i * 16 + 15] = "Y";
                }
                else
                {
                    Common.plcerr[i * 16 + 15] = "N";
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "PlcThread/AnalyseStaErr1--分析站点字异常失败:" + em.Message);
            }
        }
        #endregion
        /// <summary>
        /// è¯»å–PLC目标站地址值
        /// </summary>
        private void GetStaDestArea()
        {
            string s_plchead = "", s_chksum = "", s_SendString = "";
            string s_RecStr = "", s_startadd = "", s_len = "";
            byte[] buf = new byte[12];
            byte[] buf1 = new byte[500];
            byte[] content = new byte[200];
            int n = 0, num = 0, num1 = 0, k = 0, pi_return = 0, i_startadd = 0, i_len = 0, i_val = 0;
            byte[] bte_value = new byte[4];
            byte[] bte_addr = new byte[2];
            s_RecStr = "";
            recvStr = "";
            int j = 0;
            try
            {
                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                try
                {
                    socket.Connect(plcip, plcport);
                    i_startadd = 2001;  //2001  //模拟器代表地址1001开始,程序中必须实际地址-1  ï¼Œ#0+#$64表示读100个地址
                    s_startadd = i_startadd.ToString("X4");
                    bte_value[0] = (byte)Convert.ToInt32(s_startadd.Substring(0, 2), 16);
                    bte_value[1] = (byte)Convert.ToInt32(s_startadd.Substring(2, 2), 16);
                    //统一格式,读地址长度
                    i_len = 13;              //目前最长读125个
                    s_len = i_len.ToString("X4");
                    bte_value[2] = (byte)Convert.ToInt32(s_len.Substring(0, 2), 16);
                    bte_value[3] = (byte)Convert.ToInt32(s_len.Substring(2, 2), 16);
                    ////发送格式
                    //#0+#1+#0+#0+#0+#$15+#$FF+#$10+chr(bte1[1])+chr(bte1[2])+#0+#$7+#$E+chr(bte[1])+chr(bte[2])+chr(bte[3])+chr(bte[4])+chr(bte[5])+chr(bte[6])+chr(bte[7])+chr(bte[8])+chr(bte[9])+chr(bte[10])+chr(bte[11])+chr(bte[12])+chr(bte[13])+chr(bte[14]);
                    //s_SendString = GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(0) + GetStringByASCII(6) + " " + GetStringByASCII(3) + GetStringByASCII(bte_value[0]) + GetStringByASCII(bte_value[1]) + GetStringByASCII(bte_value[2]) + GetStringByASCII(bte_value[3]);
                    buf[0] = (byte)(0);
                    buf[1] = (byte)(0);
                    buf[2] = (byte)(0);
                    buf[3] = (byte)(0);
                    buf[4] = (byte)(0);
                    buf[5] = (byte)(6);
                    buf[6] = (byte)(32);
                    buf[7] = (byte)(3);
                    buf[8] = (byte)(bte_value[0]);
                    buf[9] = (byte)(bte_value[1]);
                    buf[10] = (byte)(bte_value[2]);
                    buf[11] = (byte)(bte_value[3]);
                    socket.Send(buf, buf.Length, 0);
                    int bytes = 0;
                    bytes = socket.Receive(buf1, buf1.Length, 0);
                    socket.Close();
                    Thread.Sleep(Common.ci_PLCtimeInterval);
                    for (int i = 0; i < 10; i++)
                    {
                        try
                        {
                            num = 256 * (int)buf1[i * 2 + 9] + (int)buf1[i * 2 + 10];
                            Common.plc_s_next_stn[plcno - 1, i] = num.ToString();
                            j = i;
                        }
                        catch (Exception r)
                        {
                            num = 0;
                        }
                        recvStr = recvStr + num.ToString();
                        DisplayPLCDataInfo(3, j);
                        // ChkCrnSts(i, num);
                    }
                    DisplayInfo("【" + DateTime.Now.ToString() + "】扫描目标站1--" + recvStr);//同步显示
                    //禁用Socket
                    //socket.Shutdown(SocketShutdown.Both);
                    //socket.Disconnect(true);
                    //socket.Close();
                }
                catch (Exception t)
                {
                    DisplayInfo("【" + DateTime.Now.ToString() + "】扫描目标站1失败:" + t.Message);//同步显示
                    //Nondisstnsts();
                    //socket.Shutdown(SocketShutdown.Both);
                    //socket.Disconnect(true);
                    socket.Close();
                    return;
                }
            }
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】" + plcno + "#读取目标站失败: " + em.Message);//同步显示
                Common.WriteLogFile("WcsError", "PlcAThread/GetStaDestArea--读取目标站失败:" + em.Message);
                return;
            }
        }
        /// <summary>
        /// æ ¹æ®å‘½ä»¤åˆ¤æ–­å†™PLC类型
        /// </summary>
        /// <param name="cmd"></param>
        private void WriteStaArea(string cmd)
        {
            string s_startadd = "", s_val = "";
            int icount = 0;
            bool ok = false;
            int n = 0, num = 0, num1 = 0, k = 0, pi_return = 0, i_startadd = 0, i_len = 0, i_val = 0;
            byte[] bte_value = new byte[14];
            byte[] bte_addr = new byte[4];
            int type = 0, stn = 0, dest = 0, id = 0, add = 0;
            OperateResult result;
            try
            {
                type = Int32.Parse(cmd.Substring(0, 2));
                id = Int32.Parse(cmd.Substring(2, 4));
                stn = Int32.Parse(cmd.Substring(6, 4));
                dest = Int32.Parse(cmd.Substring(10, 4));
                //p_TcpClient_plc.Active:=true;
                ////20100810修改统一格式
                //类型
                switch (type)
                {
                    case 2:
                        //写ID
                        i_startadd = Common.g_ari_station_idaddr[Common.GetStnSeq(stn)];
                        s_startadd = "DB100." + i_startadd.ToString();
                        result = siemensTcpNet.Write(s_startadd, (short)id);
                        if (result.IsSuccess)
                        {
                            plc_cmd = "";
                        }
                        //Thread.Sleep(Common.ci_PLCtimeInterval);
                        break;
                    case 3:
                        //写目标
                        i_startadd = Common.g_ari_station_destaddr[Common.GetStnSeq(stn)];
                        s_startadd = "DB100." + i_startadd.ToString();
                        result = siemensTcpNet.Write(s_startadd, (short)dest);
                        if (result.IsSuccess)
                        {
                            plc_cmd = "";
                        }
                        break;
                    case 4:
                        //写ID
                        i_startadd = Common.g_ari_station_idaddr[Common.GetStnSeq(stn)];
                        s_startadd = "DB100." + i_startadd.ToString();
                        result = siemensTcpNet.Write(s_startadd, (short)id);
                        //写目标.ToString("X4");;
                        i_startadd = Common.g_ari_station_destaddr[Common.GetStnSeq(stn)];
                        s_startadd = "DB100." + i_startadd.ToString();
                        result = siemensTcpNet.Write(s_startadd, (short)dest);
                        if (result.IsSuccess)
                        {
                            plc_cmd = "";
                        }
                        //Thread.Sleep(200);
                        break;
                    default:
                        break;
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "PlcAThread/WriteStaArea--写PLC错误:" + em.Message);
                DisplayInfo("【" + DateTime.Now.ToString() + "】写PLC错误:" + em.Message);//同步显示
                return;
            }
        }
        /// <summary>
        /// å†™PLC地址值
        /// </summary>
        /// <param name="pos"></param>
        /// <param name="id"></param>
        private void WriteAddr(byte val1, byte val2, byte val3, byte val4)
        {
            string s_plchead = "", s_chksum = "", s_SendString = "";
            string s_RecStr = "", s_startadd = "", s_len = "";
            int icount = 0;
            bool ok = false;
            byte[] buf = new byte[15];
            byte[] buf1 = new byte[500];
            byte[] content = new byte[100];
            int n = 0, num = 0, num1 = 0, k = 0, pi_return = 0, i_startadd = 0, i_len = 0, i_val = 0;
            byte[] bte_value = new byte[14];
            byte[] bte_addr = new byte[4];
            s_RecStr = "";
            recvStr = "";
            int type = 0, stn = 0, dest = 0, id = 0, add = 0;
            do
            {
                try
                {
                    Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
                    try
                    {
                        socket.Connect(plcip, plcport);
                        buf[0] = 0;
                        buf[1] = 1;
                        buf[2] = 0;
                        buf[3] = 0;
                        buf[4] = 0;
                        buf[5] = 9;
                        buf[6] = 32;
                        buf[7] = 16;
                        buf[8] = val1;
                        buf[9] = val2;
                        buf[10] = 0;
                        buf[11] = 1;
                        buf[12] = 2;
                        buf[13] = val3;
                        buf[14] = val4;
                        int bytes = 0;
                        bytes = socket.Send(buf, buf.Length, 0);
                        Thread.Sleep(Common.ci_PLCtimeInterval);
                        socket.Close();
                        if (bytes != buf.Length)
                        {
                            icount++;
                            if (icount >= 5)
                            {
                                ok = true;
                            }
                        }
                        else
                        {
                            ok = false;
                        }
                        //禁用Socket
                        //socket.Shutdown(SocketShutdown.Both);
                        //socket.Disconnect(true);
                        // socket.Close();
                    }
                    catch (Exception em)
                    {
                        DisplayInfo("【" + DateTime.Now.ToString() + "】写PLC错误:" + em.Message);//同步显示
                        Common.WriteLogFile("WcsError", "PlcAThread/WriteAddr--写PLCA地址失败:" + em.Message);
                        //socket.Shutdown(SocketShutdown.Both);
                        //socket.Disconnect(true);
                        socket.Close();
                        return;
                    }
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "PlcAThread/WriteAddr--写PLCA地址失败:" + em.Message);
                    return;
                }
            } while (ok == true);
        }
        /// <summary>
        /// æ ¹æ®ascii码值得到对应字符
        /// </summary>
        /// <param name="asciiCode">ascii码</param>
        /// <returns>返回对应字符</returns>
        public string GetStringByASCII(int asciiCode)
        {
            try
            {
                if (asciiCode >= 0 && asciiCode <= 127)
                {
                    System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
                    byte[] byteArray = new byte[] { (byte)asciiCode };
                    string strCharacter = asciiEncoding.GetString(byteArray);
                    return (strCharacter);
                }
                else if (asciiCode >= 128 && asciiCode <= 255)
                {
                    System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
                    byte[] byteArray = new byte[] { (byte)(asciiCode + 65536) };
                    string strCharacter = Encoding.Default.GetString(byteArray);
                    return (strCharacter);
                }
                else
                {
                    throw new Exception("无效的ASCII码!");
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "PlcAThread/GetStringByASCII--ASCII转字符串错误:" + em.Message);
                return "";
            }
        }
        #region ç”»é¢åŒæ­¥æ˜¾ç¤º
        /// <summary>
        /// åŒæ­¥æ˜¾ç¤ºplc通讯信息
        /// </summary>
        /// <param name="text">扫描信息</param>
        /// <param name="memo">备注信息</param>
        private void DisplayInfo(string text)
        {
            if (tb.InvokeRequired)
            {
                try
                {
                    displayresponse d = new displayresponse(DisplayInfo);
                    tb.Invoke(d, new object[] { text });
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "PlcAThread/DisplayInfo--同步显示plc通讯信息错误:" + em.Message);
                }
            }
            else
            {
                if (tb.Items.Count > 50)
                {
                    tb.Items.Clear();
                }
                tb.Items.Add(text);
                tb.TopIndex = tb.Items.Count - (int)(tb.Height / tb.ItemHeight);
            }
        }
        /// <summary>
        /// åŒæ­¥æ˜¾ç¤ºç«™ç‚¹çš„状态
        /// </summary>
        /// <param name="type">类别</param>
        /// <param name="k">序号</param>
        private void DisplayPLCDataInfo(int type, int k)
        {
            if (plclist.InvokeRequired)
            {
                try
                {
                    DisplayData d = new DisplayData(DisplayPLCDataInfo);
                    plclist.Invoke(d, new object[] { type, k });
                    plclist.Focus();
                    //plclist.Update();
                    //plclist.Refresh();
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "PlcAThread/DisplayPLCDataInfo--同步显示站点状态错误:" + em.Message);
                }
            }
            else
            {
                if (type == 1)
                {
                    this.plclist.Items[k].SubItems[1].Text = Common.plc_i_Wrk_no[plcno - 1, k].ToString();
                }
                else if (type == 2)
                {
                    //if (k == 8 || k == 11) return;
                    this.plclist.Items[k].SubItems[2].Text = Common.plc_s_autoing[plcno - 1, k].ToString();
                    this.plclist.Items[k].SubItems[3].Text = Common.plc_s_loading[plcno - 1, k].ToString();
                    this.plclist.Items[k].SubItems[4].Text = Common.plc_s_canining[plcno - 1, k].ToString();
                    this.plclist.Items[k].SubItems[5].Text = Common.plc_s_canouting[plcno - 1, k].ToString();
                    this.plclist.Items[k].SubItems[6].Text = Common.plc_s_inreq1[plcno - 1, k].ToString();
                    this.plclist.Items[k].SubItems[7].Text = Common.plc_s_inreq2[plcno - 1, k].ToString();
                    if (k == 4)
                    {
                        this.plclist.Items[k].SubItems[8].Text = Common.gs_barcode_data[0];
                    }
                    else if (k == 9)
                    {
                        this.plclist.Items[k].SubItems[8].Text = Common.gs_barcode_data[1];
                    }
                    else
                    {
                        this.plclist.Items[k].SubItems[8].Text = "";
                    }
                }
                else if (type == 3)
                {
                    this.plclist.Items[k].SubItems[9].Text = Common.plc_s_next_stn[plcno - 1, k].ToString();
                }
            }
        }
        /// <summary>
        /// æ›´æ–°PLC命令信息到界面显示
        /// </summary>
        /// <param name="count">队列数</param>
        private void DisplayQuerecmd(string info)
        {
            try
            {
                if (sendtoplc.InvokeRequired)
                {
                    DisplaySendTxtInfo d = new DisplaySendTxtInfo(DisplayQuerecmd);
                    sendtoplc.Invoke(d, new object[] { info });
                }
                else
                {
                    sendtoplc.Text = info.ToString();
                }
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "PlcAThread/DisplayQuerecmd--更新PLC命令信息到界面错误:" + em.Message);
            }
        }
        #endregion
        /// <summary>
        /// é€šè®¯å¤±è´¥åŽåˆå§‹åŒ–站点状态
        /// </summary>
        private void InitStn()
        {
            try
            {
                for (int i = 0; i < 30; i++)
                {
                    Common.plc_s_autoing[0, i] = "N";
                    Common.plc_s_loading[0, i] = "N";
                    Common.plc_s_canining[0, i] = "N";
                    Common.plc_s_canouting[0, i] = "N";
                    Common.plc_s_inreq1[0, i] = "N";
                    Common.plc_s_inreq2[0, i] = "N";
                    Common.plc_s_loctype[0, i] = "0";
                    Common.plc_s_error[0, i] = "N";
                    Common.plc_i_buff_count[0, i] = 0;
                    Common.plc_i_Wrk_no[0, i] = 0;
                    Common.plc_s_stn_status[0, i] = "N";
                    Common.plc_s_next_stn[0, i] = "0";
                    //Common.plc_i_pakmk[0, i] = 0;
                }
            }
            catch (Exception)
            { }
        }
        #region æ³¨é‡Š
        ///// <summary>
        ///// åŒæ­¥æ˜¾ç¤ºç«™ç‚¹buffer
        ///// </summary>
        ///// <param name="type">类别</param>
        ///// <param name="k">序号</param>
        //private void DisplayBuffer(int k)
        //{
        //    if (plcbuflist.InvokeRequired)
        //    {
        //        try
        //        {
        //            DisplayDataBuffer d = new DisplayDataBuffer(DisplayBuffer);
        //            plcbuflist.Invoke(d, new object[] { k});
        //        }
        //        catch (Exception r)
        //        {
        //        }
        //    }
        //    else
        //    {
        //        this.plcbuflist.Items[0].SubItems[k].Text = Common.gi_stabuffer[k].ToString();
        //    }
        //}
        /// <summary>
        /// åŒæ­¥æ˜¾ç¤ºç«™ç‚¹çš„状态
        /// </summary>
        /// <param name="type">类别</param>
        /// <param name="k">序号</param>
        ///// <summary>
        ///// åŒæ­¥æ˜¾ç¤ºé˜Ÿåˆ—æ•°
        ///// </summary>
        ///// <param name="count">队列数</param>
        //private void DisplayQuereCount(int count)
        //{
        //    try
        //    {
        //        if (querecount.InvokeRequired)
        //        {
        //            DisplayQuereData d = new DisplayQuereData(DisplayQuereCount);
        //            querecount.Invoke(d, new object[] { count });
        //        }
        //        else
        //        {
        //            querecount.Text = count.ToString();
        //        }
        //    }
        //    catch (Exception t)
        //    {
        //    }
        //}
        #endregion
        /// <summary>
        /// PLC主线程
        /// </summary>
        private void ThreadTask()
        {
            //int result = client.ConnectTo(plcip, rack, slot);
            //if (result != 0)
            //{
            //    DisplayInfo("【" + DateTime.Now.ToString() + "】连接PLC " + plcip + "错误:" + client.ErrorText(result));
            //    Common.WriteLogFile("WcsError", "PlcAThread/GetStaIdArea--连接PLC " + plcip + "错误:" + client.ErrorText(result));
            //    InitStn();
            //    return;
            //}
            i_plc_step = 1;
            connect = siemensTcpNet.ConnectServer();
            while (true)
            {
                //Common.plcerr[0] = "Y";
                try
                {
                    if (!connect.IsSuccess)
                    {
                        if (!ReConnect())
                        {
                            goto re;
                        }
                    }
                    //DisplayQuereCount(Common.GetPlcQuereCount(plcno - 1));
                    if (Common.GetPlcQuereCount(plcno - 1) > 0 && plc_cmd == "")
                    //if (Common.PlcAQueue.Count > 0 && plc_cmd == "")
                    {
                        plc_cmd = Common.GetPlcQuereCmd(plcno - 1);
                        //plc_cmd = Common.PlcAQueue.Dequeue();
                    }
                    DisplayQuerecmd(plc_cmd);
                    CommandStr_nkindstep();
                    switch (i_plc_step)
                    {
                        case 1:
                            GetStaIdArea();    //读ID
                            //GetStaStsArea();   //读状态
                            //GetStaDestArea();  //读目标站
                            GetStaErrArea1();   //读设备异常
                            //Thread.Sleep(Common.ci_PLCtimeInterval);
                            break;
                        case 2://写id
                            WriteStaArea(plc_cmd);
                            break;
                        case 3://写目标
                            WriteStaArea(plc_cmd);
                            break;
                        case 4://写iD和目标
                            WriteStaArea(plc_cmd);
                            break;
                        //case 5://清buffer
                        //    WriteStaArea(plc_cmd);
                        //    break;
                        //case 6://插单
                        //    WriteStaArea(plc_cmd);
                        //    //WriteStaBuffer();
                        //    break;
                    }
                    i_plc_step = 1;
                re:
                    Thread.Sleep(Common.ci_PLCtimeInterval);
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "PlcAThread/ThreadTask--PLC主线程循环错误:" + em.Message);
                }
            }
        }
    }
}
version/STWCSMapEditor/WCS/PlcBThread.cs
New file
@@ -0,0 +1,1128 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Windows.Forms;
using System.Threading;
using System.Net.NetworkInformation;
using DevComponents.DotNetBar;
using System.Runtime.InteropServices;
using System.Data;
using com.force.json;
//using Sharp7;
namespace WCS
{
    /// <summary>
    /// PLCB线程
    /// </summary>
    class PlcBThread
    {
        //NetworkStream myNetworkStream;
        //Thread thr = null;
        delegate void displayresponse(string text);
        //delegate void displayinseresponse(int val);
        string recvStr = "";
        string plcip = "";
        int plcno = 0;
        Thread trd = null;
        int i_plc_step = 0;
        int plcport = 0;
        main form1;
        public static string plc_cmd = "";
        //delegate void SetTextCallback(string text);
        delegate void DisplayData(int type, int i);
        //delegate void DisplayQuereData(int count);
        delegate void DisplaySendTxtInfo(string info);
        //delegate void DisplayErrData(int i);
        //delegate void DisplayDataBuffer(int k);
        #region ç”»é¢ä¸ŠåŒæ­¥æ˜¾ç¤ºæŽ§ä»¶
        public ListView plclist;
        //public ListView plcbuflist;
        //public DevComponents.DotNetBar.SuperGrid.SuperGridControl plcbuflist;
        public ListBox tb;
        //public LabelX lb_backMsg;
        //public DevComponents.DotNetBar.LabelX querecount;
        //public ListView errlist;
        public LabelX sendtoplc;
        //public DevComponents.DotNetBar.PanelEx os;
        //public Panel os;
        //public Microsoft.VisualBasic.PowerPacks.OvalShape mvpo;
        #endregion
        private int rack = 0, slot = 1;
        //S7Client client = new S7Client();
        public PlcBThread(int plc_no, string plc_ip, int port, main f)
        {
            try
            {
                plcno = plc_no;
                plcip = plc_ip;
                plcport = port;
                form1 = f;
                trd = new Thread(new ThreadStart(this.ThreadTask));
                trd.IsBackground = true;
                trd.Start();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "PlcThread/PlcThread--PLC线程启动出错:" + em.Message);
            }
        }
        ///// <summary>
        ///// æ ¹æ®å‘½ä»¤å­—符串判断作业类型
        ///// </summary>
        //private void CommandStr_nkindstep()
        //{
        //    int i = 0;
        //    try
        //    {
        //        if (plc_cmd == null || plc_cmd == "")
        //        {
        //            i = 1;
        //        }
        //        else
        //        {
        //            i = Convert.ToInt32(plc_cmd.Substring(0, 2));
        //        }
        //    }
        //    catch (Exception em)
        //    {
        //        Common.WriteLogFile("WcsError", "PlcThread/CommandStr_nkindstep--根据命令字符串判断作业类型出错:" + em.Message);
        //        return;
        //    }
        //    switch (i)
        //    {
        //        case 1:
        //            i_plc_step = 1;
        //            break;
        //        case 2:
        //            i_plc_step = 2;
        //            break;
        //        case 3:
        //            i_plc_step = 3;
        //            break;
        //        case 4:
        //            i_plc_step = 4;
        //            break;
        //        case 5://清buffer
        //            i_plc_step = 5;
        //            break;
        //        case 6://插单
        //            i_plc_step = 6;
        //            break;
        //        default:
        //            i_plc_step = 1;
        //            break;
        //    }
        //}
        ///////////////////////////////////////---------------------------------------读plc中字-----------------------------
        ///// <summary>
        ///// è¯»PLC id
        ///// </summary>
        //private void GetStaIdArea()
        //{
        //    recvStr = "";
        //    var client = new S7Client();
        //    int result = 0;
        //    try
        //    {
        //        result = client.ConnectTo(plcip, rack, slot);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcBThread/GetStaIdArea--连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            InitStn();
        //            return;
        //        }
        //        byte[] dbBuffer = new byte[66];
        //        result = client.DBRead(540, 0, 66, dbBuffer);
        //        //Thread.Sleep(Common.ci_PLCtimeInterval);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】读取PLCB站点ID错误:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcBThread/GetStaIdArea--读取站点状态错误:" + client.ErrorText(result));
        //            client.Disconnect();
        //            return;
        //        }
        //        for (int i = 0; i < 33; i++)
        //        {
        //            Common.plc_i_Wrk_no[plcno - 1, i + 30] = S7.GetIntAt(dbBuffer, i * 2);
        //            recvStr = recvStr + Common.plc_i_Wrk_no[plcno - 1, i + 30];
        //            DisplayPLCDataInfo(1, i + 30);
        //        }
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】扫描PLCB ID--" + recvStr);//同步显示
        //    }
        //    catch (Exception em)
        //    {
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】" + plcno + "#读取站点状态失败: " + em.Message);//同步显示
        //        Common.WriteLogFile("WcsError", "PlcBThread/GetStaIdArea--读取站点状态失败:" + em.Message);
        //        return;
        //    }
        //    finally
        //    {
        //        client.Disconnect();
        //    }
        //}
        ///// <summary>
        ///// è¯»å–PLC设备状态地址值
        ///// </summary>
        //private void GetStaStsArea()
        //{
        //    recvStr = "";
        //    var client = new S7Client();
        //    int result = 0;
        //    try
        //    {
        //        result = client.ConnectTo(plcip, rack, slot);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcBThread/GetStaStsArea--连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            InitStn();
        //            return;
        //        }
        //        byte[] dbBuffer = new byte[66];
        //        result = client.DBRead(540, 200, dbBuffer.Length, dbBuffer);
        //        //Thread.Sleep(Common.ci_PLCtimeInterval);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】读取PLCB站点状态错误:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcBThread/GetStaStsArea--读取站点状态错误:" + client.ErrorText(result));
        //            client.Disconnect();
        //            return;
        //        }
        //        for (int i = 0; i < 33; i++)
        //        {
        //            Common.plc_s_autoing[plcno - 1, i + 30] = (S7.GetBitAt(dbBuffer, i * 2, 0) == true) ? "Y" : "N";
        //            Common.plc_s_loading[plcno - 1, i + 30] = (S7.GetBitAt(dbBuffer, i * 2, 1) == true) ? "Y" : "N";
        //            Common.plc_s_inreq1[plcno - 1, i + 30] = (S7.GetBitAt(dbBuffer, i * 2, 2) == true) ? "Y" : "N";
        //            Common.plc_s_inreq2[plcno - 1, i + 30] = (S7.GetBitAt(dbBuffer, i * 2, 3) == true) ? "Y" : "N";
        //            if (S7.GetBitAt(dbBuffer, i * 2, 4) == true)   //高库位
        //            {
        //                Common.plc_s_loctype[plcno - 1, i + 30] = "Y";
        //            }
        //            else if (S7.GetBitAt(dbBuffer, i * 2, 5) == true)  //低库位
        //            {
        //                Common.plc_s_loctype[plcno - 1, i + 30] = "N";
        //            }
        //            else
        //            {
        //                Common.plc_s_loctype[plcno - 1, i + 30] = "0";
        //            }
        //            if (Common.plc_s_loading[plcno - 1, i + 30] == "N" && Common.plc_i_Wrk_no[plcno - 1, i + 30] == 0)
        //            {
        //                Common.plc_i_pakmk[plcno - 1, i + 30] = 0;
        //            }
        //            recvStr = recvStr + Common.plc_s_autoing[plcno - 1, i + 30] + Common.plc_s_loading[plcno - 1, i + 30]
        //                + Common.plc_s_inreq1[plcno - 1, i + 30];// +Common.plc_s_inreq2[plcno - 1, i + 30];// +Common.plc_s_loctype[plcno - 1, i + 30];
        //            DisplayPLCDataInfo(2, i + 30);
        //        }
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】扫描PLCB çŠ¶æ€--" + recvStr);
        //    }
        //    catch (Exception em)
        //    {
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】" + plcno + "#读取站点状态失败: " + em.Message);//同步显示
        //        Common.WriteLogFile("WcsError", "PlcBThread/GetStaStsArea--读取站点状态失败:" + em.Message);
        //        return;
        //    }
        //    finally
        //    {
        //        client.Disconnect();
        //    }
        //}
        ///// <summary>
        ///// åˆ†æžç«™ç‚¹å„状态
        ///// </summary>
        ///// <param name="i">站点序列</param>
        ///// <param name="num">状态值</param>
        //private void AnalyseStaStatus1(int i, int num)
        //{
        //    try
        //    {
        //        if (Common.fun_ChkAndByte(num, Common.ch_d1) == true)
        //        {
        //            Common.plc_s_autoing[plcno - 1, i] = "Y";
        //        }
        //        else
        //        {
        //            Common.plc_s_autoing[plcno - 1, i] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d2) == true)
        //        {
        //            Common.plc_s_loading[plcno - 1, i] = "Y";
        //        }
        //        else
        //        {
        //            Common.plc_s_loading[plcno - 1, i] = "N";
        //            //出现过无物情况清除plc_i_pakmk标记,通过判断plc_i_pakmk标记,防止重复下指令
        //            Common.plc_i_pakmk[plcno - 1, i] = 0;
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d3) == true)
        //        {
        //            Common.plc_s_canining[plcno - 1, i] = "Y";
        //        }
        //        else
        //        {
        //            Common.plc_s_canining[plcno - 1, i] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d4) == true)
        //        {
        //            Common.plc_s_canouting[plcno - 1, i] = "Y";
        //        }
        //        else
        //        {
        //            Common.plc_s_canouting[plcno - 1, i] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d5) == true)
        //        {
        //            Common.plc_s_inreq1[plcno - 1, i] = "Y";
        //        }
        //        else
        //        {
        //            Common.plc_s_inreq1[plcno - 1, i] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d6) == true)
        //        {
        //            Common.plc_s_inreq2[plcno - 1, i] = "Y";
        //        }
        //        else
        //        {
        //            Common.plc_s_inreq2[plcno - 1, i] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d7) == true)
        //        {
        //            Common.plc_s_loctype[plcno - 1, i] = "Y";
        //        }
        //        else
        //        {
        //            Common.plc_s_loctype[plcno - 1, i] = "N";
        //        }
        //    }
        //    catch (Exception em)
        //    {
        //        Common.WriteLogFile("WcsError", "PlcThread/AnalyseStaStatus1--扫描站点状态字失败:" + em.Message);
        //    }
        //}
        //#region ç«™ç‚¹å¼‚常
        ///// <summary>
        ///// å¾—到设备异常
        ///// </summary>
        //private void GetStaErrArea1()
        //{
        //    recvStr = "";
        //    var client = new S7Client();
        //    int result = 0;
        //    try
        //    {
        //        result = client.ConnectTo(plcip, rack, slot);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcBThread/GetStaStsArea--连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            InitStn();
        //            return;
        //        }
        //        byte[] dbBuffer = new byte[68];
        //        result = client.DBRead(53, 0, dbBuffer.Length, dbBuffer);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】读取PLCA设备异常失败:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcAThread/GetStaErrArea1--读取设备异常失败:" + client.ErrorText(result));
        //            return;
        //        }
        //        for (int i = 0; i < 35; i++)
        //        {
        //            if (i == 0)
        //            {
        //                Common.plcerr[i + 128] = (S7.GetBitAt(dbBuffer, i, 0) == true) ? "Y" : "N";
        //                Common.plcerr[i + 129] = (S7.GetBitAt(dbBuffer, i, 1) == true) ? "Y" : "N";
        //                Common.plcerr[i + 130] = (S7.GetBitAt(dbBuffer, i, 2) == true) ? "Y" : "N";
        //                Common.plcerr[i + 131] = (S7.GetBitAt(dbBuffer, i, 3) == true) ? "Y" : "N";
        //                Common.plcerr[i + 132] = (S7.GetBitAt(dbBuffer, i, 4) == true) ? "Y" : "N";
        //                Common.plcerr[i + 133] = (S7.GetBitAt(dbBuffer, i, 7) == true) ? "Y" : "N";
        //            }
        //            if (i == 1)
        //            {
        //                Common.plcerr[134] = (S7.GetBitAt(dbBuffer, i, 0) == true) ? "Y" : "N";
        //            }
        //            if (i > 1)
        //            {
        //                Common.plcerr[i * 4 + 127] = (S7.GetBitAt(dbBuffer, i * 2 - 2, 0) == true) ? "Y" : "N";
        //                Common.plcerr[i * 4 + 128] = (S7.GetBitAt(dbBuffer, i * 2 - 2, 1) == true) ? "Y" : "N";
        //                Common.plcerr[i * 4 + 129] = (S7.GetBitAt(dbBuffer, i * 2 - 2, 2) == true) ? "Y" : "N";
        //                Common.plcerr[i * 4 + 130] = (S7.GetBitAt(dbBuffer, i * 2 - 2, 3) == true) ? "Y" : "N";
        //            }
        //        }
        //        //DisplayInfo("【" + DateTime.Now.ToString() + "】扫描PLCA çŠ¶æ€--" + recvStr);
        //    }
        //    catch (Exception em)
        //    {
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】" + plcno + "#读取设备异常失败: " + em.Message);//同步显示
        //        Common.WriteLogFile("WcsError", "PlcAThread/GetStaStsArea--读取设备异常失败:" + em.Message);
        //        return;
        //    }
        //    finally
        //    {
        //        client.Disconnect();
        //    }
        //}
        ///// <summary>
        ///// åˆ†æžç«™ç‚¹å¼‚常
        ///// </summary>
        ///// <param name="i">站点序列</param>
        ///// <param name="num">异常值</param>
        //private void AnalyseStaErr1(int i, int num)
        //{
        //    try
        //    {
        //        if (Common.fun_ChkAndByte(num, Common.ch_d1) == true)
        //        {
        //            Common.plcerr[i * 16 + 0] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 0] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d2) == true)
        //        {
        //            Common.plcerr[i * 16 + 1] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 1] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d3) == true)
        //        {
        //            Common.plcerr[i * 16 + 2] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 2] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d4) == true)
        //        {
        //            Common.plcerr[i * 16 + 3] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 3] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d5) == true)
        //        {
        //            Common.plcerr[i * 16 + 4] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 4] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d6) == true)
        //        {
        //            Common.plcerr[i * 16 + 5] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 5] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d7) == true)
        //        {
        //            Common.plcerr[i * 16 + 6] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 6] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d8) == true)
        //        {
        //            Common.plcerr[i * 16 + 7] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 7] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d9) == true)
        //        {
        //            Common.plcerr[i * 16 + 8] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 8] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d10) == true)
        //        {
        //            Common.plcerr[i * 16 + 9] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 9] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d11) == true)
        //        {
        //            Common.plcerr[i * 16 + 10] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 10] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d12) == true)
        //        {
        //            Common.plcerr[i * 16 + 11] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 11] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d13) == true)
        //        {
        //            Common.plcerr[i * 16 + 12] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 12] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d14) == true)
        //        {
        //            Common.plcerr[i * 16 + 13] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 13] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d15) == true)
        //        {
        //            Common.plcerr[i * 16 + 14] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 14] = "N";
        //        }
        //        if (Common.fun_ChkAndByte(num, Common.ch_d16) == true)
        //        {
        //            Common.plcerr[i * 16 + 15] = "Y";
        //        }
        //        else
        //        {
        //            Common.plcerr[i * 16 + 15] = "N";
        //        }
        //    }
        //    catch (Exception em)
        //    {
        //        Common.WriteLogFile("WcsError", "PlcThread/AnalyseStaErr1--分析站点字异常失败:" + em.Message);
        //    }
        //}
        //#endregion
        ///// <summary>
        ///// è¯»å–PLC目标站地址值
        ///// </summary>
        //private void GetStaDestArea()
        //{
        //    recvStr = "";
        //    var client = new S7Client();
        //    int result = 0;
        //    try
        //    {
        //        result = client.ConnectTo(plcip, rack, slot);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcBThread/GetStaDestArea--连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            InitStn();
        //            return;
        //        }
        //        byte[] dbBuffer = new byte[66];
        //        result = client.DBRead(540, 100, 66, dbBuffer);
        //        //Thread.Sleep(Common.ci_PLCtimeInterval);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】读取PLCB目标站错误:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcBThread/GetStaDestArea--读取目标站错误:" + client.ErrorText(result));
        //            client.Disconnect();
        //            return;
        //        }
        //        for (int i = 0; i < 33; i++)
        //        {
        //            Common.plc_s_next_stn[plcno - 1, i + 30] = S7.GetIntAt(dbBuffer, i * 2).ToString();
        //            recvStr = recvStr + Common.plc_s_next_stn[plcno - 1, i + 30];
        //            DisplayPLCDataInfo(3, i + 30);
        //        }
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】扫描PLCB ç›®æ ‡ç«™--" + recvStr);//同步显示
        //        ///////////////////PLC读取托盘条码/////////////////////////////
        //        recvStr = "";
        //        byte[] dbBuffer1 = new byte[4];
        //        result = client.DBRead(540, 300, dbBuffer1.Length, dbBuffer1);
        //        //Thread.Sleep(Common.ci_PLCtimeInterval);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】读取PLCB条码数据错误:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcBThread/GetBarcodeData--读取条码数据错误:" + client.ErrorText(result));
        //            client.Disconnect();
        //            return;
        //        }
        //        for (int i = 0; i < 1; i++)
        //        {
        //            //long kk = ;
        //            Common.gs_barcode_data[2] = S7.GetDIntAt(dbBuffer1, i * 4).ToString();
        //            //Common.plc_s_next_stn[plcno - 1, i] = S7.GetIntAt(dbBuffer, i * 2).ToString();
        //            recvStr = recvStr + (i + 1) + "站:" + Common.gs_barcode_data[2] + "; ";
        //            DisplayPLCDataInfo(3, i + 30);
        //        }
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】扫描PLCB æ¡ç æ•°æ®--" + recvStr);//同步显示
        //        //////////////////////////////////////////////////////////////
        //    }
        //    catch (Exception em)
        //    {
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】" + plcno + "#读取目标站失败: " + em.Message);//同步显示
        //        Common.WriteLogFile("WcsError", "PlcBThread/GetStaDestArea--读取目标站失败:" + em.Message);
        //        return;
        //    }
        //    finally
        //    {
        //        client.Disconnect();
        //    }
        //}
        ///// <summary>
        ///// æ ¹æ®å‘½ä»¤åˆ¤æ–­å†™PLC类型
        ///// </summary>
        ///// <param name="cmd"></param>
        //private void WriteStaArea(string cmd)
        //{
        //    int type = 0, stn = 0, dest = 0, id = 0, i_startadd = 0;
        //    bool bl = false;
        //    try
        //    {
        //        type = Int32.Parse(cmd.Substring(0, 2));
        //        id = Int32.Parse(cmd.Substring(2, 4));
        //        stn = Int32.Parse(cmd.Substring(6, 4));
        //        dest = Int32.Parse(cmd.Substring(10, 4));
        //        //p_TcpClient_plc.Active:=true;
        //        ////20100810修改统一格式
        //        //类型
        //        switch (type)
        //        {
        //            case 2:
        //                //写ID
        //                i_startadd = Common.g_ari_station_idaddr[Common.GetStnSeq(stn)];
        //                //bl = WriteAddr(i_startadd, id, dest, 2);
        //                bl = WriteAddr(Common.GetStnSeq(stn), id, dest, 2);
        //                //Thread.Sleep(Common.ci_PLCtimeInterval);
        //                if (bl)
        //                {
        //                    plc_cmd = "";
        //                }
        //                break;
        //            case 3:
        //                //写目标
        //                i_startadd = Common.g_ari_station_destaddr[Common.GetStnSeq(stn)];
        //                //bl = WriteAddr(i_startadd, id, dest, 3);
        //                bl = WriteAddr(Common.GetStnSeq(stn), id, dest, 3);
        //                //Thread.Sleep(Common.ci_PLCtimeInterval);
        //                if (bl)
        //                {
        //                    plc_cmd = "";
        //                }
        //                break;
        //            case 4:
        //                //写ID
        //                i_startadd = Common.g_ari_station_idaddr[Common.GetStnSeq(stn)];
        //                //bl = WriteAddr(i_startadd, id, dest, 4);
        //                bl = WriteAddr(Common.GetStnSeq(stn), id, dest, 4);
        //                //Thread.Sleep(Common.ci_PLCtimeInterval);
        //                if (bl)
        //                {
        //                    ////写目标
        //                    //i_startadd = Common.g_ari_station_destaddr[Common.GetStnSeq(stn)];
        //                    //bool bl1 = WriteAddr(i_startadd, dest);
        //                    ////Thread.Sleep(200);
        //                    //if (bl1)
        //                    //{
        //                        plc_cmd = "";
        //                    //}
        //                }
        //                break;
        //            case 5:
        //                //清除空栈板出库需求信号
        //                var client = new S7Client();
        //                int result = 0;
        //                try
        //                {
        //                    int pos = 0;
        //                    if (id == 1)   //需求出信号
        //                    {
        //                        i_startadd = 216;
        //                        pos = 3;
        //                    }
        //                    else       //需求入信号
        //                    {
        //                        i_startadd = 208;
        //                        pos = 2;
        //                    }
        //                    result = client.ConnectTo(plcip, rack, slot);
        //                    if (result != 0)
        //                    {
        //                        DisplayInfo("【" + DateTime.Now.ToString() + "】连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //                        Common.WriteLogFile("WcsError", "PlcBThread/WriteAddr--连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //                        return;
        //                    }
        //                    byte[] dbBuffer = new byte[2];
        //                    S7.SetBitAt(ref dbBuffer, 0, pos, false);
        //                    //S7.SetIntAt(dbBuffer, 0, 0);
        //                    result = client.DBWrite(540, i_startadd, dbBuffer.Length, dbBuffer);
        //                    if (result == 0)
        //                    {
        //                        plc_cmd = "";
        //                    }
        //                    else
        //                    {
        //                        client.Disconnect();
        //                    }
        //                }
        //                catch (Exception)
        //                { }
        //                finally
        //                {
        //                    client.Disconnect();
        //                }
        //                //Thread.Sleep(200);
        //                break;
        //            case 6:
        //                //清空信号
        //                //Thread.Sleep(200);
        //                plc_cmd = "";
        //                break;
        //            default:
        //                break;
        //        }
        //    }
        //    catch (Exception em)
        //    {
        //        Common.WriteLogFile("WcsError", "PlcBThread/WriteStaArea--写PLC错误:" + em.Message);
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】写PLC错误:" + em.Message);//同步显示
        //        return;
        //    }
        //}
        ///// <summary>
        ///// å†™PLC地址值
        ///// </summary>
        ///// <param name="pos"></param>
        ///// <param name="id"></param>
        //private bool WriteAddr(int pos, int id, int dest, int type)
        //{
        //    bool bl = false;
        //    var client = new S7Client();
        //    bool ok = false;
        //    int icount = 0;
        //    try
        //    {
        //        int result = -1;
        //        result = client.ConnectTo(plcip, rack, slot);
        //        if (result != 0)
        //        {
        //            DisplayInfo("【" + DateTime.Now.ToString() + "】连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            Common.WriteLogFile("WcsError", "PlcBThread/WriteAddr--连接PLC " + plcip + "错误:" + client.ErrorText(result));
        //            return bl;
        //        }
        //        byte[] dbBuffer = new byte[2];
        //        byte[] dbBuffer1 = new byte[2];
        //        if (type == 2 || type == 4)
        //        {
        //            S7.SetIntAt(dbBuffer, 0, (short)id);
        //        }
        //        if (type == 3 || type == 4)
        //        {
        //            S7.SetIntAt(dbBuffer1, 0, (short)dest);
        //        }
        //        var s7MultiVar = new S7MultiVar(client);
        //        //s7MultiVar.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, 540, Common.g_ari_station_idaddr[pos], dbBuffer.Length, ref dbBuffer);
        //        //s7MultiVar.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, 540, Common.g_ari_station_destaddr[pos], dbBuffer1.Length, ref dbBuffer1);
        //        do              //如果失败,尝试下发3次
        //        {
        //            if (type == 2 || type == 4)
        //            {
        //                s7MultiVar.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, 540, Common.g_ari_station_idaddr[pos], dbBuffer.Length, ref dbBuffer);
        //                //result = client.DBWrite(540, Common.g_ari_station_idaddr[pos], dbBuffer.Length, dbBuffer);
        //            }
        //            if (type == 3 || type == 4)
        //            {
        //                s7MultiVar.Add(S7Consts.S7AreaDB, S7Consts.S7WLByte, 540, Common.g_ari_station_destaddr[pos], dbBuffer1.Length, ref dbBuffer1);
        //                //result = client.DBWrite(540, Common.g_ari_station_destaddr[pos], dbBuffer1.Length, dbBuffer1);
        //            }
        //            result = -1;
        //            if (Common.writeFlag)
        //            {
        //                Common.writeFlag = false;
        //                result = s7MultiVar.Write();
        //                Thread.Sleep(100);
        //                //result = s7MultiVar.Write();
        //                Common.WriteLogFile("PLCBCmd", "PlcBThread/PLC命令:" + plc_cmd + ";结果:" + result);
        //                Common.writeFlag = true;
        //            }
        //            if (result == 0)
        //            {
        //                bl = true;
        //                ok = true;
        //            }
        //            else
        //            {
        //                icount++;
        //                if (icount >= 5)
        //                {
        //                    ok = true;
        //                }
        //                else
        //                {
        //                    Thread.Sleep(Common.ci_PLCtimeInterval);
        //                }
        //            }
        //        } while (ok == false);
        //    }
        //    catch (Exception em)
        //    {
        //        DisplayInfo("【" + DateTime.Now.ToString() + "】" + plcno + "#写PLCB地址失败: " + em.Message);//同步显示
        //        Common.WriteLogFile("WcsError", "PlcBThread/WriteAddr--写PLCB地址失败:" + em.Message);
        //        return bl;
        //    }
        //    finally
        //    {
        //        client.Disconnect();
        //    }
        //    return bl;
        //}
        ///// <summary>
        ///// æ ¹æ®ascii码值得到对应字符
        ///// </summary>
        ///// <param name="asciiCode">ascii码</param>
        ///// <returns>返回对应字符</returns>
        //public string GetStringByASCII(int asciiCode)
        //{
        //    try
        //    {
        //        if (asciiCode >= 0 && asciiCode <= 127)
        //        {
        //            System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
        //            byte[] byteArray = new byte[] { (byte)asciiCode };
        //            string strCharacter = asciiEncoding.GetString(byteArray);
        //            return (strCharacter);
        //        }
        //        else if (asciiCode >= 128 && asciiCode <= 255)
        //        {
        //            System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding();
        //            byte[] byteArray = new byte[] { (byte)(asciiCode + 65536) };
        //            string strCharacter = Encoding.Default.GetString(byteArray);
        //            return (strCharacter);
        //        }
        //        else
        //        {
        //            throw new Exception("无效的ASCII码!");
        //        }
        //    }
        //    catch (Exception em)
        //    {
        //        Common.WriteLogFile("WcsError", "PlcBThread/GetStringByASCII--ASCII转字符串错误:" + em.Message);
        //        return "";
        //    }
        //}
        //#region ç”»é¢åŒæ­¥æ˜¾ç¤º
        ///// <summary>
        ///// åŒæ­¥æ˜¾ç¤ºplc通讯信息
        ///// </summary>
        ///// <param name="text">扫描信息</param>
        ///// <param name="memo">备注信息</param>
        //private void DisplayInfo(string text)
        //{
        //    if (tb.InvokeRequired)
        //    {
        //        try
        //        {
        //            displayresponse d = new displayresponse(DisplayInfo);
        //            tb.Invoke(d, new object[] { text });
        //        }
        //        catch (Exception em)
        //        {
        //            Common.WriteLogFile("WcsError", "PlcBThread/DisplayInfo--同步显示plc通讯信息错误:" + em.Message);
        //        }
        //    }
        //    else
        //    {
        //        if (tb.Items.Count > 50)
        //        {
        //            tb.Items.Clear();
        //        }
        //        tb.Items.Add(text);
        //        tb.TopIndex = tb.Items.Count - (int)(tb.Height / tb.ItemHeight);
        //    }
        //}
        ///// <summary>
        ///// åŒæ­¥æ˜¾ç¤ºç«™ç‚¹çš„状态
        ///// </summary>
        ///// <param name="type">类别</param>
        ///// <param name="k">序号</param>
        //private void DisplayPLCDataInfo(int type, int k)
        //{
        //    if (plclist.InvokeRequired)
        //    {
        //        try
        //        {
        //            DisplayData d = new DisplayData(DisplayPLCDataInfo);
        //            plclist.Invoke(d, new object[] { type, k });
        //            plclist.Focus();
        //            //plclist.Update();
        //            //plclist.Refresh();
        //        }
        //        catch (Exception em)
        //        {
        //            Common.WriteLogFile("WcsError", "PlcBThread/DisplayPLCDataInfo--同步显示站点状态错误:" + em.Message);
        //        }
        //    }
        //    else
        //    {
        //        if (type == 1)
        //        {
        //            this.plclist.Items[k].SubItems[1].Text = Common.plc_i_Wrk_no[plcno - 1, k].ToString();
        //        }
        //        else if (type == 2)
        //        {
        //            //if (k == 8 || k == 11) return;
        //            this.plclist.Items[k].SubItems[2].Text = Common.plc_s_autoing[plcno - 1, k].ToString();
        //            this.plclist.Items[k].SubItems[3].Text = Common.plc_s_loading[plcno - 1, k].ToString();
        //            this.plclist.Items[k].SubItems[4].Text = Common.plc_s_canining[plcno - 1, k].ToString();
        //            this.plclist.Items[k].SubItems[5].Text = Common.plc_s_canouting[plcno - 1, k].ToString();
        //            this.plclist.Items[k].SubItems[6].Text = Common.plc_s_inreq1[plcno - 1, k].ToString();
        //            this.plclist.Items[k].SubItems[7].Text = Common.plc_s_inreq2[plcno - 1, k].ToString();
        //            this.plclist.Items[k].SubItems[8].Text = Common.plc_s_loctype[plcno - 1, k].ToString();
        //            //this.plclist.Items[k].SubItems[9].Text = Class1.plc_s_loctype[plcno - 1, k].ToString();
        //        }
        //        else if (type == 3)
        //        {
        //            this.plclist.Items[k].SubItems[9].Text = Common.plc_s_next_stn[plcno - 1, k].ToString();
        //        }
        //    }
        //}
        ///// <summary>
        ///// æ›´æ–°PLC命令信息到界面显示
        ///// </summary>
        ///// <param name="count">队列数</param>
        //private void DisplayQuerecmd(string info)
        //{
        //    try
        //    {
        //        if (sendtoplc.InvokeRequired)
        //        {
        //            DisplaySendTxtInfo d = new DisplaySendTxtInfo(DisplayQuerecmd);
        //            sendtoplc.Invoke(d, new object[] { info });
        //        }
        //        else
        //        {
        //            sendtoplc.Text = info.ToString();
        //        }
        //    }
        //    catch (Exception em)
        //    {
        //        Common.WriteLogFile("WcsError", "PlcBThread/DisplayQuerecmd--更新PLC命令信息到界面错误:" + em.Message);
        //    }
        //}
        //#endregion
        ///// <summary>
        ///// é€šè®¯å¤±è´¥åŽåˆå§‹åŒ–站点状态
        ///// </summary>
        //private void InitStn()
        //{
        //    try
        //    {
        //        for (int i = 0; i < 33; i++)
        //        {
        //            Common.plc_s_autoing[1, i + 30] = "N";
        //            Common.plc_s_loading[1, i + 30] = "N";
        //            Common.plc_s_canining[1, i + 30] = "N";
        //            Common.plc_s_canouting[1, i + 30] = "N";
        //            Common.plc_s_inreq1[1, i + 30] = "N";
        //            Common.plc_s_inreq2[1, i + 30] = "N";
        //            Common.plc_s_loctype[1, i + 30] = "0";
        //            Common.plc_s_error[1, i + 30] = "N";
        //            Common.plc_i_buff_count[1, i + 30] = 0;
        //            Common.plc_i_Wrk_no[1, i + 30] = 0;
        //            Common.plc_s_stn_status[1, i + 30] = "N";
        //            Common.plc_s_next_stn[1, i + 30] = "0";
        //            //Common.plc_i_pakmk[1, i + 30] = 0;
        //        }
        //    }
        //    catch (Exception)
        //    { }
        //}
        //#region æ³¨é‡Š
        /////// <summary>
        /////// åŒæ­¥æ˜¾ç¤ºç«™ç‚¹buffer
        /////// </summary>
        /////// <param name="type">类别</param>
        /////// <param name="k">序号</param>
        ////private void DisplayBuffer(int k)
        ////{
        ////    if (plcbuflist.InvokeRequired)
        ////    {
        ////        try
        ////        {
        ////            DisplayDataBuffer d = new DisplayDataBuffer(DisplayBuffer);
        ////            plcbuflist.Invoke(d, new object[] { k});
        ////        }
        ////        catch (Exception r)
        ////        {
        ////        }
        ////    }
        ////    else
        ////    {
        ////        this.plcbuflist.Items[0].SubItems[k].Text = Common.gi_stabuffer[k].ToString();
        ////    }
        ////}
        ///// <summary>
        ///// åŒæ­¥æ˜¾ç¤ºç«™ç‚¹çš„状态
        ///// </summary>
        ///// <param name="type">类别</param>
        ///// <param name="k">序号</param>
        /////// <summary>
        /////// åŒæ­¥æ˜¾ç¤ºé˜Ÿåˆ—æ•°
        /////// </summary>
        /////// <param name="count">队列数</param>
        ////private void DisplayQuereCount(int count)
        ////{
        ////    try
        ////    {
        ////        if (querecount.InvokeRequired)
        ////        {
        ////            DisplayQuereData d = new DisplayQuereData(DisplayQuereCount);
        ////            querecount.Invoke(d, new object[] { count });
        ////        }
        ////        else
        ////        {
        ////            querecount.Text = count.ToString();
        ////        }
        ////    }
        ////    catch (Exception t)
        ////    {
        ////    }
        ////}
        //#endregion
        /// <summary>
        /// PLC主线程
        /// </summary>
        private void ThreadTask()
        {
            ////int result = client.ConnectTo(plcip, rack, slot);
            ////if (result != 0)
            ////{
            ////    DisplayInfo("【" + DateTime.Now.ToString() + "】连接PLC " + plcip + "错误:" + client.ErrorText(result));
            ////    Common.WriteLogFile("WcsError", "PlcBThread/GetStaIdArea--连接PLC " + plcip + "错误:" + client.ErrorText(result));
            ////    InitStn();
            ////    //return;
            ////}
            //while (true)
            //{
            //    //if (client.Connected)
            //    //{
            //        try
            //        {
            //            //DisplayQuereCount(Common.GetPlcQuereCount(plcno - 1));
            //            //if (Common.PlcBQueue.Count > 0 && plc_cmd == "")
            //            //{
            //            //    plc_cmd = Common.PlcBQueue.Dequeue();
            //            //}
            //            if (Common.GetPlcQuereCount(plcno - 1) > 0 && plc_cmd == "")
            //            {
            //                plc_cmd = Common.GetPlcQuereCmd(plcno - 1);
            //            }
            //            DisplayQuerecmd(plc_cmd);
            //            CommandStr_nkindstep();
            //            switch (i_plc_step)
            //            {
            //                case 1:
            //                    GetStaIdArea();    //读ID
            //                    GetStaStsArea();   //读状态
            //                    GetStaDestArea();  //读目标站
            //                    GetStaErrArea1();   //读设备异常
            //                    break;
            //                case 2://写id
            //                    WriteStaArea(plc_cmd);
            //                    break;
            //                case 3://写目标
            //                    WriteStaArea(plc_cmd);
            //                    break;
            //                case 4://写iD和目标
            //                    WriteStaArea(plc_cmd);
            //                    break;
            //                case 5://清buffer
            //                    WriteStaArea(plc_cmd);
            //                    break;
            //                case 6://插单
            //                    WriteStaArea(plc_cmd);
            //                    //WriteStaBuffer();
            //                    break;
            //            }
            //            i_plc_step = 1;
            //            Thread.Sleep(Common.ci_PLCtimeInterval);
            //        }
            //        catch (Exception em)
            //        {
            //            Common.WriteLogFile("WcsError", "PlcBThread/ThreadTask--PLC主线程循环错误:" + em.Message);
            //        }
            //    //}
            //    //else
            //    //{
            //    //    client.Disconnect();
            //    //    result = client.ConnectTo(plcip, rack, slot);
            //    //    if (result != 0)
            //    //    {
            //    //        DisplayInfo("【" + DateTime.Now.ToString() + "】连接PLC " + plcip + "错误:" + client.ErrorText(result));
            //    //        Common.WriteLogFile("WcsError", "PlcBThread/GetStaIdArea--连接PLC " + plcip + "错误:" + client.ErrorText(result));
            //    //        InitStn();
            //    //    }
            //    //}
            //}
        }
    }
}
version/STWCSMapEditor/WCS/Program.cs
New file
@@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Reflection;
namespace WCS
{
    static class Program
    {
        [DllImport("User32.dll")]
        private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
        [DllImport("User32.dll")]
        private static extern bool SetForegroundWindow(IntPtr hWnd);
        private const int WS_SHOWNORMAL = 1;
        /// <summary>
        /// åº”用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new main());
            Process instance = RunningInstance();
            if (instance == null)
            {
                //Application.Run(new main());
                Application.Run(new Form2());
            }
            else
            {
                HandleRunningInstance(instance);
            }
        }
        /// <summary>
        /// èŽ·å–æ­£åœ¨è¿è¡Œçš„å®žä¾‹ï¼Œæ²¡æœ‰è¿è¡Œçš„å®žä¾‹è¿”å›žnull;
        /// </summary>
        public static Process RunningInstance()
        {
            Process current = Process.GetCurrentProcess();
            Process[] processes = Process.GetProcessesByName(current.ProcessName);
            foreach (Process process in processes)
            {
                if (process.Id != current.Id)
                {
                    if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
                    {
                        return process;
                    }
                }
            }
            return null;
        }
        /// <summary>
        /// æ˜¾ç¤ºå·²è¿è¡Œçš„程序。
        /// </summary>
        public static void HandleRunningInstance(Process instance)
        {
            MessageBox.Show("系统已运行,请勿重复打开", "提示");
            ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL); //显示,可以注释掉
            SetForegroundWindow(instance.MainWindowHandle);            //放到前端
        }
    }
}
version/STWCSMapEditor/WCS/Properties/AssemblyInfo.cs
New file
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// æœ‰å…³ç¨‹åºé›†çš„常规信息通过下列属性集
// æŽ§åˆ¶ã€‚更改这些属性值可修改
// ä¸Žç¨‹åºé›†å…³è”的信息。
[assembly: AssemblyTitle("WCS")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WCS")]
[assembly: AssemblyCopyright("Copyright")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// å°† ComVisible è®¾ç½®ä¸º false ä½¿æ­¤ç¨‹åºé›†ä¸­çš„类型
// å¯¹ COM ç»„件不可见。如果需要从 COM è®¿é—®æ­¤ç¨‹åºé›†ä¸­çš„类型,
// åˆ™å°†è¯¥ç±»åž‹ä¸Šçš„ ComVisible å±žæ€§è®¾ç½®ä¸º true。
[assembly: ComVisible(false)]
// å¦‚果此项目向 COM å…¬å¼€ï¼Œåˆ™ä¸‹åˆ— GUID ç”¨äºŽç±»åž‹åº“çš„ ID
[assembly: Guid("9d9a2110-1b4b-41cd-8dc8-181db9d4ea9d")]
// ç¨‹åºé›†çš„版本信息由下面四个值组成:
//
//      ä¸»ç‰ˆæœ¬
//      æ¬¡ç‰ˆæœ¬
//      å†…部版本号
//      ä¿®è®¢å·
//
// å¯ä»¥æŒ‡å®šæ‰€æœ‰è¿™äº›å€¼ï¼Œä¹Ÿå¯ä»¥ä½¿ç”¨â€œå†…部版本号”和“修订号”的默认值,
// æ–¹æ³•是按如下所示使用“*”:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
version/STWCSMapEditor/WCS/Properties/Resources.Designer.cs
New file
@@ -0,0 +1,142 @@
//------------------------------------------------------------------------------
// <auto-generated>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//     è¿è¡Œæ—¶ç‰ˆæœ¬:4.0.30319.42000
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½ä¼šå¯¼è‡´ä¸æ­£ç¡®çš„行为,并且如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œè¿™äº›æ›´æ”¹å°†ä¼šä¸¢å¤±ã€‚
// </auto-generated>
//------------------------------------------------------------------------------
namespace WCS.Properties {
    using System;
    /// <summary>
    ///   ä¸€ä¸ªå¼ºç±»åž‹çš„资源类,用于查找本地化的字符串等。
    /// </summary>
    // æ­¤ç±»æ˜¯ç”± StronglyTypedResourceBuilder
    // ç±»é€šè¿‡ç±»ä¼¼äºŽ ResGen æˆ– Visual Studio çš„工具自动生成的。
    // è‹¥è¦æ·»åŠ æˆ–ç§»é™¤æˆå‘˜ï¼Œè¯·ç¼–è¾‘ .ResX æ–‡ä»¶ï¼Œç„¶åŽé‡æ–°è¿è¡Œ ResGen
    // (以 /str ä½œä¸ºå‘½ä»¤é€‰é¡¹),或重新生成 VS é¡¹ç›®ã€‚
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources {
        private static global::System.Resources.ResourceManager resourceMan;
        private static global::System.Globalization.CultureInfo resourceCulture;
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        /// <summary>
        ///   è¿”回此类使用的缓存的 ResourceManager å®žä¾‹ã€‚
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WCS.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        /// <summary>
        ///   ä½¿ç”¨æ­¤å¼ºç±»åž‹èµ„源类,为所有资源查找
        ///   é‡å†™å½“前线程的 CurrentUICulture å±žæ€§ã€‚
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap fork_l {
            get {
                object obj = ResourceManager.GetObject("fork_l", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap fork_l1 {
            get {
                object obj = ResourceManager.GetObject("fork_l1", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap info {
            get {
                object obj = ResourceManager.GetObject("info", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap question {
            get {
                object obj = ResourceManager.GetObject("question", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap sta_b {
            get {
                object obj = ResourceManager.GetObject("sta_b", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap sta_l {
            get {
                object obj = ResourceManager.GetObject("sta_l", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ç±»ä¼¼ crnstslist çš„æœ¬åœ°åŒ–字符串。
        /// </summary>
        internal static string String {
            get {
                return ResourceManager.GetString("String", resourceCulture);
            }
        }
        /// <summary>
        ///   æŸ¥æ‰¾ System.Drawing.Bitmap ç±»åž‹çš„æœ¬åœ°åŒ–资源。
        /// </summary>
        internal static System.Drawing.Bitmap warn {
            get {
                object obj = ResourceManager.GetObject("warn", resourceCulture);
                return ((System.Drawing.Bitmap)(obj));
            }
        }
    }
}
version/STWCSMapEditor/WCS/Properties/Resources.resx
New file
@@ -0,0 +1,145 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="sta_l" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\bin\Debug\image\sta_l.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="String" xml:space="preserve">
    <value>crnstslist</value>
  </data>
  <data name="question" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\bin\Debug\image\question.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="fork_l" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\bin\Debug\image\fork_l.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="warn" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\bin\Debug\image\warn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="sta_b" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\bin\Debug\image\sta_b.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\bin\Debug\image\info.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
  <data name="fork_l1" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\bin\Debug\image\fork_l.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>
</root>
version/STWCSMapEditor/WCS/Properties/Settings.Designer.cs
New file
@@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
//     æ­¤ä»£ç ç”±å·¥å…·ç”Ÿæˆã€‚
//     è¿è¡Œæ—¶ç‰ˆæœ¬:4.0.30319.42000
//
//     å¯¹æ­¤æ–‡ä»¶çš„æ›´æ”¹å¯èƒ½ä¼šå¯¼è‡´ä¸æ­£ç¡®çš„行为,并且如果
//     é‡æ–°ç”Ÿæˆä»£ç ï¼Œè¿™äº›æ›´æ”¹å°†ä¼šä¸¢å¤±ã€‚
// </auto-generated>
//------------------------------------------------------------------------------
namespace WCS.Properties {
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
        public static Settings Default {
            get {
                return defaultInstance;
            }
        }
    }
}
version/STWCSMapEditor/WCS/Properties/Settings.settings
New file
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>
version/STWCSMapEditor/WCS/ScaleComThread.cs
New file
@@ -0,0 +1,260 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO.Ports;
using System.Windows.Forms;
namespace WCS
{
    /// <summary>
    /// ç£…秤串口通讯线程
    /// </summary>
    class ScaleComThread
    {
        SerialPort sp;
        #region ç”»é¢ä¸ŠåŒæ­¥æ˜¾ç¤ºæŽ§ä»¶
        public ListBox scaledisplay;
        #endregion
        Thread trd = null;
        delegate void displayresponse(string text);
        int i = 1;
        int scaleno = 0, portno = 0;
        //int sum = 0;
        main form1;
        bool threadFlag = true, spFlag = true;
        public ScaleComThread(int scale, int port_no, main m)
        {
            scaleno = scale;
            portno = port_no;
            sp = new SerialPort();
            sp.PortName = "COM" + port_no.ToString();
            sp.BaudRate = 9600;
            sp.DataBits = 8;
            sp.Parity = Parity.None;
            sp.StopBits = StopBits.One;
            form1 = m;
            if (sp.IsOpen) return;
            try
            {
                sp.Open();
            }
            catch (Exception r)
            {
                spFlag = false;
                //DisplayInfo("【" + DateTime.Now.ToString() + "】打开串口" + portno + "失败,请检查");
                //return;
            }
            trd = new Thread(new ThreadStart(this.ThreadTask));
            trd.IsBackground = true;
            trd.Start();
        }
        /// <summary>
        /// èŽ·å–ç£…ç§¤ç§°é‡é‡é‡å¹¶è§£æž
        /// </summary>
        private void GetScaleData()
        {
            string s_SendString = "", s_RecStr = "", s_wt = "", s_part1 = "", s_part2 = "", s_part3 = "", s_part4 = "", s_part5 = "", s_part6 = "", s_part7 = "", s_imp = "";
            int pos = 0, pos1 = 0, pos2 = 0;
            try
            {
                //s_SendString = "P";
                //sp.DiscardInBuffer();
                //sp.DiscardOutBuffer();
                //sp.WriteLine(s_SendString);
                //Thread.Sleep(400);
                s_RecStr = "";
                Common.gd_gross_wt[scaleno - 1] = 0;
                s_RecStr = sp.ReadExisting();
                // DisplayInfo(s_RecStr);
                if (s_RecStr.Length <= 0)
                {
                    DisplayInfo("【" + DateTime.Now.ToString() + "】未能得到磅称重量,请检查");
                    return;
                }
                if (scaleno == 1)
                {
                    pos = s_RecStr.IndexOf("NT,");
                    if (pos > 0)
                    {
                        s_RecStr = s_RecStr.Substring(pos + 3, s_RecStr.Length - pos - 3);
                        pos1 = s_RecStr.IndexOf("kg");
                        if (pos1 > 0)
                        {
                            s_RecStr = s_RecStr.Substring(0, pos1).Trim().Replace(" ", "");
                            try
                            {
                                Common.gd_gross_wt[scaleno - 1] = double.Parse(s_RecStr);
                            }
                            catch (Exception r)
                            {
                                Common.gd_gross_wt[scaleno - 1] = 0;
                            }
                            DisplayInfo("【" + DateTime.Now.ToString() + "】称重:" + s_RecStr + "KG");
                            sp.DiscardInBuffer();
                            sp.DiscardOutBuffer();
                        }
                        else
                        {
                            Common.gd_gross_wt[scaleno - 1] = 0;
                            //DisplayInfo("Read Data Error!------Date:" + System.DateTime.Now.ToString());
                            sp.DiscardInBuffer();
                            sp.DiscardOutBuffer();
                        }
                    }
                }
                else if (scaleno == 2)
                {
                    pos = s_RecStr.IndexOf("NT,");
                    if (pos > 0)
                    {
                        s_RecStr = s_RecStr.Substring(pos + 3, s_RecStr.Length - pos - 3);
                        pos1 = s_RecStr.IndexOf("kg");
                        if (pos1 > 0)
                        {
                            s_RecStr = s_RecStr.Substring(0, pos1).Trim().Replace(" ", "");
                            try
                            {
                                Common.gd_gross_wt[scaleno - 1] = double.Parse(s_RecStr);
                            }
                            catch (Exception r)
                            {
                                Common.gd_gross_wt[scaleno - 1] = 0;
                            }
                            DisplayInfo("【" + DateTime.Now.ToString() + "】称重:" + s_RecStr + "KG");
                            sp.DiscardInBuffer();
                            sp.DiscardOutBuffer();
                        }
                        else
                        {
                            Common.gd_gross_wt[scaleno - 1] = 0;
                            //DisplayInfo("Read Data Error!------Date:" + System.DateTime.Now.ToString());
                            sp.DiscardInBuffer();
                            sp.DiscardOutBuffer();
                        }
                    }
                }
                else if (scaleno == 3)
                {
                    pos = s_RecStr.IndexOf("NT,");
                    if (pos > 0)
                    {
                        s_RecStr = s_RecStr.Substring(pos + 3, s_RecStr.Length - pos - 3);
                        pos1 = s_RecStr.IndexOf("kg");
                        if (pos1 > 0)
                        {
                            s_RecStr = s_RecStr.Substring(0, pos1).Trim().Replace(" ", "");
                            try
                            {
                                Common.gd_gross_wt[scaleno - 1] = double.Parse(s_RecStr);
                            }
                            catch (Exception r)
                            {
                                Common.gd_gross_wt[scaleno - 1] = 0;
                            }
                            DisplayInfo("【" + DateTime.Now.ToString() + "】称重:" + s_RecStr + "KG");
                            sp.DiscardInBuffer();
                            sp.DiscardOutBuffer();
                        }
                        else
                        {
                            Common.gd_gross_wt[scaleno - 1] = 0;
                            //DisplayInfo("Read Data Error!------Date:" + System.DateTime.Now.ToString());
                            sp.DiscardInBuffer();
                            sp.DiscardOutBuffer();
                        }
                    }
                }
                else if (scaleno == 4)
                {
                    pos = s_RecStr.IndexOf("NT,");
                    if (pos > 0)
                    {
                        s_RecStr = s_RecStr.Substring(pos + 3, s_RecStr.Length - pos - 3);
                        pos1 = s_RecStr.IndexOf("kg");
                        if (pos1 > 0)
                        {
                            s_RecStr = s_RecStr.Substring(0, pos1).Trim().Replace(" ", "");
                            try
                            {
                                Common.gd_gross_wt[scaleno - 1] = double.Parse(s_RecStr);
                            }
                            catch (Exception r)
                            {
                                Common.gd_gross_wt[scaleno - 1] = 0;
                            }
                            DisplayInfo("【" + DateTime.Now.ToString() + "】称重:" + s_RecStr + "KG");
                            sp.DiscardInBuffer();
                            sp.DiscardOutBuffer();
                        }
                        else
                        {
                            Common.gd_gross_wt[scaleno - 1] = 0;
                            //DisplayInfo("Read Data Error!------Date:" + System.DateTime.Now.ToString());
                            sp.DiscardInBuffer();
                            sp.DiscardOutBuffer();
                        }
                    }
                }
            }
            catch (Exception t)
            {
                Common.gd_gross_wt[scaleno - 1] = 0;
                DisplayInfo("【" + DateTime.Now.ToString() + "】得到磅秤重量失败:" + t.Message);
                //DisplayInfo("未能得到磅称重量,请检查!---时间:" + System.DateTime.Now.ToString());
                //Thread.Sleep(400);
                return;
            }
        }
        #region é€šè®¯åé¦ˆåŒæ­¥æ˜¾ç¤º
        private void DisplayInfo(string text)
        {
            if (scaledisplay.InvokeRequired)
            {
                try
                {
                    displayresponse d = new displayresponse(DisplayInfo);
                    scaledisplay.Invoke(d, new object[] { text });
                }
                catch (Exception r)
                {
                }
            }
            else
            {
                if (scaledisplay.Items.Count > 12)
                {
                    scaledisplay.Items.Clear();
                }
                scaledisplay.Items.Add(text);
            }
        }
        #endregion
        private void ThreadTask()
        {
            while (threadFlag)
            {
                if (spFlag)
                {
                    GetScaleData();
                }
                else
                {
                    DisplayInfo("【" + DateTime.Now.ToString() + "】打开串口" + portno + "失败,请检查");
                    threadFlag = false;
                }
                Thread.Sleep(400);
            }
        }
    }
}
version/STWCSMapEditor/WCS/ScaleTcpThread.cs
New file
@@ -0,0 +1,285 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.IO.Ports;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
namespace WCS
{
    /// <summary>
    /// ç£…秤TCP通讯线程
    /// </summary>
    class ScaleTcpThread
    {
        SerialPort sp;
        #region ç”»é¢ä¸ŠåŒæ­¥æ˜¾ç¤ºæŽ§ä»¶
        public ListBox scaledisplay;
        #endregion
        Thread trd = null;
        delegate void displayresponse(string text);
        int scaleno = 0, portno = 0;
        private string scaleIp;
        //int sum = 0;
        private IPEndPoint ServerInfo;
        private Socket socket;
        private Byte[] MsgBuffer;
        private Byte[] MsgSend;
        main form1;
        bool threadFlag = true, spFlag = true;
        public ScaleTcpThread(int scale_no, string scale_ip, int port, main m)
        {
            this.scaleno = scale_no;
            this.scaleIp = scale_ip;
            this.portno = port;
            this.form1 = m;
            MsgBuffer = new Byte[65535];
            MsgSend = new Byte[65535];
            //sp = new SerialPort();
            //sp.PortName = "COM" + port.ToString();
            //sp.BaudRate = 9600;
            //sp.DataBits = 8;
            //sp.Parity = Parity.None;
            //sp.StopBits = StopBits.One;
            //if (sp.IsOpen) return;
            //try
            //{
            //    sp.Open();
            //}
            //catch (Exception r)
            //{
            //    spFlag = false;
            //    //DisplayInfo("【" + DateTime.Now.ToString() + "】打开串口" + portno + "失败,请检查");
            //    //return;
            //}
            trd = new Thread(new ThreadStart(this.ThreadTask));
            trd.IsBackground = true;
            trd.Start();
        }
        #region socket连接
        /// <summary>
        /// socket连接WMS服务器
        /// </summary>
        private void SocketConnect()
        {
            ServerInfo = new IPEndPoint(IPAddress.Parse(scaleIp), portno);
            try
            {
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket.Connect(ServerInfo);
                //Int32 bytes = socket.Receive(MsgBuffer, MsgBuffer.Length, SocketFlags.None);
                //StringBuilder buff = new StringBuilder();
                //String receiveData = Encoding.UTF8.GetString(MsgBuffer, 0, bytes);
                //socket.Send(Encoding.Unicode.GetBytes("socket connect!"));
                //RecevieData = "s";
                //socket.BeginReceive(MsgBuffer, 0, MsgBuffer.Length, 0, new AsyncCallback(ReceiveCallBack), null);
                DisplayInfo("【" + DateTime.Now.ToString() + "】磅秤连接成功");
            }
            catch (Exception em)
            {
                DisplayInfo("【" + DateTime.Now.ToString() + "】磅秤连接失败!" + em.Message);
            }
        }
        /// <summary>
        /// socket重新连接WMS服务器
        /// </summary>
        private void SocketReConnect()
        {
            if (socket.Connected)
            {
                socket.Close();
            }
            Thread.Sleep(10000);
            SocketConnect();
        }
        /// <summary>
        /// åˆ¤æ–­socket是否已连接
        /// </summary>
        /// <returns></returns>
        private bool checkSocket()
        {
            bool ret = true;
            bool isConnected = false;
            bool isRead = false;
            bool isWrite = false;
            bool isError = false;
            int avalSize = 0;
            try
            {
                isConnected = socket.Connected;
                isRead = socket.Poll(50, SelectMode.SelectRead);
                avalSize = socket.Available;
                isWrite = socket.Poll(50, SelectMode.SelectWrite);
                isError = socket.Poll(50, SelectMode.SelectError);
                if (isConnected == false || isError == true || (isRead == true && avalSize == 0))
                {
                    ret = false;
                }
            }
            catch (Exception e)
            {
                ret = false;
            }
            return ret;
        }
        #endregion
        /// <summary>
        /// èŽ·å–ç£…ç§¤ç§°é‡é‡é‡å¹¶è§£æž
        /// </summary>
        private void GetScaleData()
        {
            //string s_SendString = "", s_RecStr = "", s_wt = "", s_part1 = "", s_part2 = "", s_part3 = "", s_part4 = "", s_part5 = "", s_part6 = "", s_part7 = "", s_imp = "";
            //int pos = 0, pos1 = 0, pos2 = 0;
            string dataValue = "P", s_RecStr = "";
            double d_RecStr = 0;
            try
            {
                if (checkSocket() == false)
                {
                    //调用重连
                    Common.gd_gross_wt[scaleno - 1] = 0;
                    DisplayInfo("【" + DateTime.Now.ToString() + "】磅秤连接已断开,重连...");
                    SocketReConnect();
                    return;
                }
                MsgSend = Encoding.UTF8.GetBytes(dataValue);
                if (socket.Connected)
                {
                    // å‘主机发送数据.
                    socket.Send(MsgSend, MsgSend.Length, SocketFlags.None);
                    //socket.Send(MsgSend);
                    //DisplayInfo("发送信息:" + dataValue);
                    //RecevieData = "";
                    // æŽ¥æ”¶ä¸»æœºåº”ç­”
                    Int32 bytes = socket.Receive(MsgBuffer, MsgBuffer.Length, SocketFlags.None);
                    StringBuilder buff = new StringBuilder();
                    if (bytes > 0)
                    {
                        // å°†ç¼“冲的字节数组,装换为字符串.
                        // String receiveData = Encoding.ASCII.GetString(MsgBuffer, 0, bytes);
                        s_RecStr = Encoding.ASCII.GetString(MsgBuffer, 0, bytes);
                        if (s_RecStr.Length < 16)
                        {
                            Common.gd_gross_wt[scaleno - 1] = 0;
                            DisplayInfo("【" + DateTime.Now.ToString() + "】无称重数据或者数据异常");
                            return;
                        }
                        s_RecStr = s_RecStr.Substring(1, 7);
                        //for (int i = 0; i < s_RecStr.Length; i++)
                        //{
                        //    string s_nPos = s_RecStr.Substring(i, 1);
                        //    if (Common.ChkStrtoInt(s_nPos) && i != 5)
                        //    {
                        //        s_wt_Str += s_nPos;
                        //    }
                        //    else if (i == 5)
                        //    {
                        //        if (s_nPos == ".")
                        //        {
                        //            s_wt_Str += s_nPos;
                        //        }
                        //        else
                        //        {
                        //            Common.gd_gross_wt[scaleno - 1] = 0;
                        //            DisplayInfo("【" + DateTime.Now.ToString() + "】无称重数据或者数据异常");
                        //            return;
                        //        }
                        //    }
                        //}
                        try
                        {
                            d_RecStr = Convert.ToDouble(s_RecStr);
                            Common.gd_gross_wt[scaleno - 1] = d_RecStr;
                            DisplayInfo("【" + DateTime.Now.ToString() + "】" + Common.gd_gross_wt[scaleno - 1] + " KG");
                        }
                        catch
                        {
                            return;
                        }
                        //DisplayInfo("收到消息:" + receiveData);
                        // AnalysisReceive(receiveData);   //解析收到的数据
                        // åŠ å…¥å­—ç¬¦ä¸²ç¼“å­˜
                        //buff.Append(str);
                        // å†æ¬¡æŽ¥å—,看看后面还有没有数据.
                    }
                }
                else
                {
                    Common.gd_gross_wt[scaleno - 1] = 0;
                    DisplayInfo("【" + DateTime.Now.ToString() + "】磅秤连接已断开,无法读取数据!");
                }
                return;
            }
            catch (Exception t)
            {
                Common.gd_gross_wt[scaleno - 1] = 0;
                DisplayInfo("【" + DateTime.Now.ToString() + "】得到磅秤重量失败:" + t.Message);
                //DisplayInfo("未能得到磅称重量,请检查!---时间:" + System.DateTime.Now.ToString());
                //Thread.Sleep(400);
                return;
            }
        }
        #region é€šè®¯åé¦ˆåŒæ­¥æ˜¾ç¤º
        private void DisplayInfo(string text)
        {
            if (scaledisplay.InvokeRequired)
            {
                try
                {
                    displayresponse d = new displayresponse(DisplayInfo);
                    scaledisplay.Invoke(d, new object[] { text });
                }
                catch (Exception r)
                {
                }
            }
            else
            {
                if (scaledisplay.Items.Count > 12)
                {
                    scaledisplay.Items.Clear();
                }
                scaledisplay.Items.Add(text);
            }
        }
        #endregion
        private void ThreadTask()
        {
            SocketConnect();
            while (threadFlag)
            {
                //if (spFlag)
                //{
                GetScaleData();
                //}
                //else
                //{
                //    DisplayInfo("【" + DateTime.Now.ToString() + "】打开串口" + portno + "失败,请检查");
                //    threadFlag = false;
                //}
                Thread.Sleep(400);
            }
        }
    }
}
version/STWCSMapEditor/WCS/System Tools XP.ico
version/STWCSMapEditor/WCS/UpdateThread.cs
New file
@@ -0,0 +1,1732 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using DevComponents.DotNetBar.Controls;
using System.Windows.Forms;
using System.Drawing;
//using com.force.json;
using System.Data;
using System.Data.SqlClient;
namespace WCS
{
    /// <summary>
    /// å›žæŠ¥å¤„理线程
    /// </summary>
    class UpdateThread
    {
        #region ç”»é¢ä¸ŠåŒæ­¥æ˜¾ç¤ºæŽ§ä»¶
        public ListViewEx frmdata;
        delegate void SetTextCallback(string seq, string Errif, string arg_string);
        #endregion
        Thread trd = null;
        public UpdateThread()
        {
            try
            {
                trd = new Thread(new ThreadStart(this.ThreadTask));
                trd.IsBackground = true;
                trd.Start();
            }
            catch (Exception em)
            {
                Common.WriteLogFile("WcsError", "UpdateThread/UpdateThread--回报线程启动出错:" + em.Message);
            }
        }
        #region é€šè®¯åé¦ˆåŒæ­¥æ˜¾ç¤º
        /// <summary>
        /// æ˜¾ç¤ºå¤„理信息
        /// </summary>
        /// <param name="text"></param>
        private void DisplayInfo(string seq, string Errif, string arg_string)
        {
            if (frmdata == null)
            {
                return;
            }
            if (frmdata.InvokeRequired)
            {
                try
                {
                    SetTextCallback d = new SetTextCallback(DisplayInfo);
                    frmdata.Invoke(d, new object[] { seq, Errif, arg_string });
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "UpdateThread/DisplayInfo--同步回报信息失败:" + em.Message);
                }
            }
            else
            {
                add_dw_log(seq, Errif, arg_string);
                if (frmdata.Items.Count > 200)
                {
                    frmdata.Items.Clear(); ;
                }
            }
        }
        /// <summary>
        /// æ·»åŠ ListView界面显示
        /// </summary>
        /// <param name="le">listview</param>
        /// <param name="seq">需要</param>
        /// <param name="Errif">异常信息</param>
        /// <param name="arg_string">显示内容</param>
        public void add_dw_log(string seq, string Errif, string arg_string)
        {
            try
            {
                ListViewItem lvi = new ListViewItem();
                lvi.SubItems[0].Text = "【" + DateTime.Now.ToString() + "】" + seq + arg_string;
                if (Errif == "N")
                {
                    lvi.ForeColor = Color.Black;
                }
                else if (Errif == "E")
                {
                    lvi.ForeColor = Color.Red;
                }
                else if (Errif == "P")
                {
                    lvi.ForeColor = Color.Blue;
                }
                frmdata.Items.Add(lvi);
                frmdata.EnsureVisible(frmdata.Items.Count - 1);
            }
            catch (Exception em)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.SubItems[0].Text = "【" + DateTime.Now.ToString() + "】" + seq + arg_string + "异常:" + em.Message;
                frmdata.Items.Add(lvi);
                Common.WriteLogFile("WcsError", "UpdateThread/add_dw_log--回报添加界面显示出错:" + em.Message);
            }
        }
        #endregion
        #region ä¸šåŠ¡å¤„ç†
        /// <summary>
        /// ç”Ÿæˆå‡ºåº“工作档
        /// </summary>
        public void ProcOutToWorkData(string seq)
        {
            string ls_locno = "";
            string ls_error_memo = "", sql = "";
            int li_wrkno = 0, li_io_type = 0, li_stnNo = 0, li_e_stnNo = 0;
            DateTime ldt_date = System.DateTime.Now;
            double d_outQty = 0, d_stkQty = 0;
            int action = 0, prnstatus = 0;
            DisplayInfo(seq, "N", " --处理出库通知档,生成出库工作档......");
            try
            {
                //查找最早一条待出库库位
                sql = "select top 1 vlpla from cust_wait_pakout where status<>'Y' and nltyp<>'A01' order by status,modi_time";
                DataView dvLoc = Common.ExecAsrsSelect(sql);
                if (dvLoc.Count <= 0)
                {
                    return;
                }
                foreach (DataRowView drow in dvLoc)
                {
                    ls_locno = drow[0].ToString();
                }
                if (ls_locno == "")
                {
                    return;
                }
                //查询库位号是否在库状态,并查询条码号
                sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_locno + "' and loc_sts='F'";
                string barcode = "";
                DataView dv = Common.ExecAsrsSelect(sql);
                if (dv.Count <= 0)
                {
                    ls_error_memo = "   " + seq + ".1 åº“位" + ls_locno + "不存在或非在库状态,请检查";
                    DisplayInfo("", "E", ls_error_memo);
                    goto re;
                }
                else
                {
                    foreach (DataRowView drow in dv)
                    {
                        barcode = drow[1].ToString();
                    }
                }
                //根据库位号查找该库位所有出库资料
                sql = "select lgnum,tanum,tapos,matnr,maktx,werks,vsolm,meins,bname ";
                sql += " from cust_wait_pakout where status<>'Y' and nltyp<>'A01' and vlpla='" + ls_locno + "' order by status,modi_time";
                dv = Common.ExecAsrsSelect(sql);
                if (dv.Count <= 0)
                {
                    return;
                }
                li_wrkno = Common.GetWrkno(0);
                string sqlDetl = "", sqlWaitIn = "";
                foreach (DataRowView drow in dv)
                {
                    string lgnum = drow[0].ToString();
                    string tanum = drow[1].ToString();
                    string tapos = drow[2].ToString();
                    string matnr = drow[3].ToString();
                    string maktx = drow[4].ToString();
                    string werks = drow[5].ToString();
                    string vsolm = drow[6].ToString();
                    string meins = drow[7].ToString();
                    string bname = drow[8].ToString();
                    sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname,zpallet) ";
                    sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", ";
                    sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "','" + barcode + "');";
                    sqlWaitIn += " update cust_wait_pakout set status='Y' where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + " and vlpla=" + ls_locno + ";";
                    d_outQty += double.Parse(vsolm);
                }
                DisplayInfo("", "P", "   " + seq + ".2 æ­£åœ¨å¤„理待出库资料!库位:" + ls_locno);
                //查询库位号对应库存明细总数量
                sql = "select sum(anfme) from asr_loc_detl where loc_no='" + ls_locno + "' ";
                dv = Common.ExecAsrsSelect(sql);
                if (dv.Count <= 0)
                {
                    ls_error_memo = "   " + seq + ".3 åº“位" + ls_locno + "没有库存明细,请检查";
                    DisplayInfo("", "E", ls_error_memo);
                    goto re;
                }
                else
                {
                    foreach (DataRowView drow in dv)
                    {
                        d_stkQty += double.Parse(drow[0].ToString());
                    }
                }
                int li_crnrow = int.Parse(ls_locno.Substring(0, 2));
                int li_crnno = (li_crnrow + 1) / 2;
                string new_loc_sts = "";
                if (d_outQty < d_stkQty)
                {
                    li_io_type = 103;
                    new_loc_sts = "P";
                    li_e_stnNo = 4;
                    li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo);
                    action = 2;         //单独打印
                    //prnstatus = 0;      //默认等待,拣料站更新
                }
                else if (d_outQty == d_stkQty)
                {
                    li_io_type = 101;
                    new_loc_sts = "R";
                    li_e_stnNo = 13;
                    li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo);
                    action = 3;         //既打印又确认
                    //prnstatus = 0;      //默认等待,拣料站更新
                }
                else
                {
                    ls_error_memo = "   " + seq + ".4 åº“位" + ls_locno + "通知出库数量超出库存数量,请检查";
                    DisplayInfo("", "E", ls_error_memo);
                    goto re;
                }
                sqlWaitIn = sqlWaitIn.Replace("update cust_wait_pakout set", "update cust_wait_pakout set action=" + action + ",");
                sql = sqlDetl;
                sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) ";
                sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_locno + "', ";
                sql += " " + li_e_stnNo + "," + li_stnNo + ",'" + barcode + "'); ";
                sql += " update asr_loc_mast set loc_sts='" + new_loc_sts + "' where loc_no='" + ls_locno + "'; ";
                sql += sqlWaitIn;
                SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                sqlcmd.Transaction = sqltrans;
                try
                {
                    sqlcmd.ExecuteNonQuery();
                    sqltrans.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    //sqlcommon.Close();
                    ls_error_memo = "   " + seq + ".4 æ’入工作主档[asr_wrk_mast]错误 !库位:" + ls_locno + " å¼‚常:" + t.Message;
                    DisplayInfo("", "E", ls_error_memo);
                    goto re;
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqlconn.Dispose();
                }
                return;
            re:
                sql = "update cust_wait_pakout set status='X',action=" + action + ",modi_time='" + ldt_date + "' where vlpla='" + ls_locno + "'";
                bool result = Common.ExecAsrsModify(sql);
                if (!result)
                {
                    ls_error_memo = "   " + seq + ".5 æ›´æ–°å‡ºåº“档失败!库位:" + ls_locno;
                    DisplayInfo("", "E", ls_error_memo);
                }
            }
            catch (Exception em)
            {
                ls_error_memo = "   " + seq + ".6 å¤„理待处理档生成出库工作档失败:" + em.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// ç”Ÿæˆåº“位调整工作档
        /// </summary>
        public void ProcLocToWorkData(string seq)
        {
            string ls_slocno = "", ls_dlocno = "";
            string ls_error_memo = "", sql = "";
            int li_wrkno = 0, li_io_type = 0, li_stnNo = 0, li_e_stnNo = 0;
            DateTime ldt_date = System.DateTime.Now;
            double d_outQty = 0, d_stkQty = 0;
            DisplayInfo(seq, "N", " --处理出库通知档,生成出库工作档......");
            try
            {
                //查找最早一条待出库库位
                sql = "select top 1 vlpla,nlpla from cust_wait_pakout where status<>'Y' and nltyp='A01' order by status,modi_time";
                DataView dvLoc = Common.ExecAsrsSelect(sql);
                if (dvLoc.Count <= 0)
                {
                    return;
                }
                foreach (DataRowView drow in dvLoc)
                {
                    ls_slocno = drow[0].ToString();
                    ls_dlocno = drow[1].ToString();
                }
                if (ls_slocno == "" || ls_dlocno=="")
                {
                    ls_error_memo = "   " + seq + ".1 å‡ºåº“通知档源库位为空[cust_wait_pakout]错误 !库位:" + ls_slocno;
                    DisplayInfo("", "E", ls_error_memo);
                    goto re;
                }
                //查询目标库位状态,如果为空表示库位已转,如果在库表示源库位出库,目标库位并板,如果不在库,则报警停止执行
                string loc_sts = "", barcoded = "";
                sql = "select loc_sts,barcode from asr_loc_mast where loc_no='" + ls_dlocno + "' ";
                DataView dv = Common.ExecAsrsSelect(sql);
                if (dv.Count <= 0)
                {
                    ls_error_memo = "   " + seq + ".2 ç›®æ ‡åº“位" + ls_dlocno + "不存在,请检查";
                    DisplayInfo("", "E", ls_error_memo);
                    goto re;
                }
                else
                {
                    foreach (DataRowView drow in dv)
                    {
                        loc_sts = drow[0].ToString();
                        barcoded = drow[1].ToString();
                    }
                }
                if (loc_sts == "O")
                { //库位移转
                    sql = "select lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname ";
                    sql += " from asr_loc_detl where loc_no='" + ls_slocno + "' order by matnr,modi_time";
                    dv = Common.ExecAsrsSelect(sql);
                    if (dv.Count <= 0)
                    {
                        return;
                    }
                    li_wrkno = Common.GetWrkno(0);
                    string sqlDetl = "", sqlWaitIn = "";
                    foreach (DataRowView drow in dv)
                    {
                        string lgnum = drow[0].ToString();
                        string tanum = drow[1].ToString();
                        string tapos = drow[2].ToString();
                        string matnr = drow[3].ToString();
                        string maktx = drow[4].ToString();
                        string werks = drow[5].ToString();
                        string vsolm = drow[6].ToString();
                        string meins = drow[7].ToString();
                        string bname = drow[8].ToString();
                        sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname) ";
                        sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", ";
                        sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "');";
                        sqlWaitIn += " update cust_wait_pakout set status='Y' where nltyp='A01' and vlpla='" + ls_slocno + "' and nlpla='" + ls_dlocno + "';";
                    }
                    DisplayInfo("", "P", "   " + seq + ".3 æ­£åœ¨å¤„理待出库资料!库位:" + ls_slocno);
                    //查询库位号是否在库状态,并查询条码号
                    sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_slocno + "' and loc_sts='F'";
                    string barcode = "";
                    dv = Common.ExecAsrsSelect(sql);
                    if (dv.Count <= 0)
                    {
                        ls_error_memo = "   " + seq + ".4 æºåº“位" + ls_slocno + "不存在或非在库状态,请检查";
                        DisplayInfo("", "E", ls_error_memo);
                        goto re;
                    }
                    else
                    {
                        foreach (DataRowView drow in dv)
                        {
                            barcode = drow[1].ToString();
                        }
                    }
                    int li_crnrow = int.Parse(ls_slocno.Substring(0, 2));
                    int li_crnno = (li_crnrow + 1) / 2;
                    li_io_type = 11;
                    sql = sqlDetl;
                    sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,loc_no,barcode,empty_mk) ";
                    sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_slocno + "', ";
                    sql += " '" + ls_dlocno + "','" + barcode + "','N'); ";
                    sql += " update asr_loc_mast set loc_sts='R' where loc_no='" + ls_slocno + "'; ";
                    sql += " update asr_loc_mast set loc_sts='S' where loc_no='" + ls_dlocno + "'; ";
                    sql += sqlWaitIn;
                    SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                    sqlconn.Open();
                    SqlTransaction sqltrans = sqlconn.BeginTransaction();
                    SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                    sqlcmd.Transaction = sqltrans;
                    try
                    {
                        sqlcmd.ExecuteNonQuery();
                        sqltrans.Commit();
                    }
                    catch (SqlException t)
                    {
                        sqltrans.Rollback();
                        //sqlcommon.Close();
                        ls_error_memo = "   " + seq + ".5 æ’入工作主档[asr_wrk_mast]错误 !库位:" + ls_slocno + " å¼‚常:" + t.Message;
                        DisplayInfo("", "E", ls_error_memo);
                        goto re;
                    }
                    finally
                    {
                        sqlcmd.Dispose();
                        sqlconn.Dispose();
                    }
                }
                else if (loc_sts == "F")
                {//目标库位并板
                    //源库位出库
                    string sqlDetld = "";
                    int li_wrknod = 0;
                    int action = 0;
                    sql = "select lgnum,tanum,tapos,matnr,maktx,werks,vsolm,meins,bname ";
                    sql += " from cust_wait_pakout where status<>'Y' and nltyp='A01' and vlpla='" + ls_slocno + "' and nlpla='" + ls_dlocno + "' order by status,modi_time";
                    dv = Common.ExecAsrsSelect(sql);
                    if (dv.Count <= 0)
                    {
                        return;
                    }
                    li_wrkno = Common.GetWrkno(0);
                    li_wrknod = Common.GetWrkno(0);
                    string sqlDetl = "", sqlWaitIn = "";
                    foreach (DataRowView drow in dv)
                    {
                        string lgnum = drow[0].ToString();
                        string tanum = drow[1].ToString();
                        string tapos = drow[2].ToString();
                        string matnr = drow[3].ToString();
                        string maktx = drow[4].ToString();
                        string werks = drow[5].ToString();
                        string vsolm = drow[6].ToString();
                        string meins = drow[7].ToString();
                        string bname = drow[8].ToString();
                        sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname) ";
                        sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", ";
                        sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "');";
                        sqlDetld += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,werks,anfme,altme,bname) ";
                        sqlDetld += " values(" + li_wrknod + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", ";
                        sqlDetld += " '" + matnr + "','" + maktx + "','" + werks + "'," + vsolm + ",'" + meins + "','" + bname + "');";
                        sqlWaitIn += " update cust_wait_pakout set status='Y' where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + " and vlpla=" + ls_slocno + ";";
                        d_outQty += double.Parse(vsolm);
                    }
                    DisplayInfo("", "P", "   " + seq + ".6 æ­£åœ¨å¤„理待出库资料!库位:" + ls_slocno);
                    //查询库位号是否在库状态,并查询条码号
                    sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_slocno + "' and loc_sts='F'";
                    string barcode = "";
                    dv = Common.ExecAsrsSelect(sql);
                    if (dv.Count <= 0)
                    {
                        ls_error_memo = "   " + seq + ".7 æºåº“位" + ls_slocno + "不存在或非在库状态,请检查";
                        DisplayInfo("", "E", ls_error_memo);
                        goto re;
                    }
                    else
                    {
                        foreach (DataRowView drow in dv)
                        {
                            barcode = drow[1].ToString();
                        }
                    }
                    //查询库位号对应库存明细总数量
                    sql = "select sum(anfme) from asr_loc_detl where loc_no='" + ls_slocno + "' ";
                    dv = Common.ExecAsrsSelect(sql);
                    if (dv.Count <= 0)
                    {
                        ls_error_memo = "   " + seq + ".8 åº“位" + ls_slocno + "没有库存明细,请检查";
                        DisplayInfo("", "E", ls_error_memo);
                        goto re;
                    }
                    else
                    {
                        foreach (DataRowView drow in dv)
                        {
                            d_stkQty += double.Parse(drow[0].ToString());
                        }
                    }
                    int li_crnrow = int.Parse(ls_slocno.Substring(0, 2));
                    int li_crnno = (li_crnrow + 1) / 2;
                    string new_loc_sts = "";
                    if (d_outQty < d_stkQty)
                    {
                        li_io_type = 103;
                        new_loc_sts = "P";
                        li_e_stnNo = 4;
                        li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo);
                        action = 2;
                    }
                    else if (d_outQty == d_stkQty)
                    {
                        li_io_type = 101;
                        new_loc_sts = "R";
                        li_e_stnNo = 13;
                        li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo);
                        action = 3;
                    }
                    else
                    {
                        ls_error_memo = "   " + seq + ".9 åº“位" + ls_slocno + "通知出库数量超出库存数量,请检查";
                        DisplayInfo("", "E", ls_error_memo);
                        goto re;
                    }
                    int li_crnrowd = int.Parse(ls_dlocno.Substring(0, 2));
                    int li_crnnod = (li_crnrowd + 1) / 2;
                    int li_io_typed = 104;
                    int li_e_stnNod = 4;
                    int li_stnNod = Common.getIoStaNo(li_io_typed, li_crnnod, li_e_stnNod);
                    sqlWaitIn = sqlWaitIn.Replace("update cust_wait_pakout set", "update cust_wait_pakout set action=" + action + ",");
                    sql = sqlDetl;
                    sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) ";
                    sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_slocno + "', ";
                    sql += " " + li_e_stnNo + "," + li_stnNo + ",'" + barcode + "'); ";
                    sql += sqlDetld;
                    sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) ";
                    sql += " values(" + li_wrknod + ",'" + ldt_date + "',11," + li_io_typed + "," + li_crnnod + ",13,'" + ls_dlocno + "', ";
                    sql += " " + li_e_stnNod + "," + li_stnNod + ",'" + barcoded + "'); ";
                    sql += " update asr_loc_mast set loc_sts='" + new_loc_sts + "' where loc_no='" + ls_slocno + "'; ";
                    sql += " update asr_loc_mast set loc_sts='P' where loc_no='" + ls_dlocno + "'; ";
                    sql += sqlWaitIn;
                    SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                    sqlconn.Open();
                    SqlTransaction sqltrans = sqlconn.BeginTransaction();
                    SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                    sqlcmd.Transaction = sqltrans;
                    try
                    {
                        sqlcmd.ExecuteNonQuery();
                        sqltrans.Commit();
                    }
                    catch (SqlException t)
                    {
                        sqltrans.Rollback();
                        //sqlcommon.Close();
                        ls_error_memo = "   " + seq + ".10 æ’入工作主档[asr_wrk_mast]错误 !库位:" + ls_slocno + " å¼‚常:" + t.Message;
                        DisplayInfo("", "E", ls_error_memo);
                        goto re;
                    }
                    finally
                    {
                        sqlcmd.Dispose();
                        sqlconn.Dispose();
                    }
                }
                else
                {
                    ls_error_memo = "   " + seq + ".11 ç›®æ ‡åº“位" + ls_dlocno + "不是在库或空库位状态,请检查";
                    DisplayInfo("", "E", ls_error_memo);
                    goto re;
                }
                return;
            re:
                sql = "update cust_wait_pakout set status='X',modi_time='" + ldt_date + "' where vlpla='" + ls_slocno + "'";
                bool result = Common.ExecAsrsModify(sql);
                if (!result)
                {
                    ls_error_memo = "   " + seq + ".12 æ›´æ–°å‡ºåº“档失败!库位:" + ls_slocno;
                    DisplayInfo("", "E", ls_error_memo);
                }
            }
            catch (Exception em)
            {
                ls_error_memo = "   " + seq + ".13 å¤„理待处理档生成出库工作档失败:" + em.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// ç”Ÿæˆç›˜ç‚¹å·¥ä½œæ¡£
        /// </summary>
        public void ProcCheckToWorkData(string seq)
        {
            string ls_locno = "";
            string ls_error_memo = "", sql = "";
            int li_wrkno = 0, li_io_type = 0, li_stnNo = 0, li_e_stnNo = 0;
            DateTime ldt_date = System.DateTime.Now;
            int type = 1;
            DisplayInfo(seq, "N", " --处理盘点通知档,生成盘点工作档......");
            try
            {
                //查找最早一条待出库库位
                sql = "select top 1 lgpla from cust_wait_check where status<>'Y' order by status,modi_time";
                DataView dvLoc = Common.ExecAsrsSelect(sql);
                if (dvLoc.Count <= 0)
                {
                    return;
                }
                foreach (DataRowView drow in dvLoc)
                {
                    ls_locno = drow[0].ToString();
                }
                if (ls_locno == "")
                {
                    return;
                }
                //查询库位号是否在库状态,并查询条码号
                sql = "select loc_no,barcode from asr_loc_mast where loc_no='" + ls_locno + "' and loc_sts='F'";
                string barcode = "";
                DataView dv = Common.ExecAsrsSelect(sql);
                if (dv.Count <= 0)
                {
                    ls_error_memo = "   " + seq + ".2 åº“位" + ls_locno + "不存在或非在库状态,请检查";
                    DisplayInfo("", "E", ls_error_memo);
                    goto re;
                }
                else
                {
                    foreach (DataRowView drow in dv)
                    {
                        barcode = drow[1].ToString();
                    }
                }
                //根据库位号查找该库位所有出库资料
                sql = "select a.lgnum,a.ivnum,a.ivpos,b.matnr,b.maktx,b.altme,b.werks ";
                sql += " from cust_wait_check a, asr_loc_detl b ";
                sql += " where a.status<>'Y' and a.lgpla='" + ls_locno + "' and a.matnr=b.matnr and lgpla=b.loc_no and io_status='N'";
                sql += " order by a.status,a.modi_time";
                dv = Common.ExecAsrsSelect(sql);
                if (dv == null || dv.Count <= 0)
                {
                    sql = "select b.lgnum,b.tbnum,b.tbpos,b.matnr,b.maktx,b.altme,b.werks ";
                    sql += " from cust_wait_check a, asr_loc_detl b ";
                    sql += " where a.status<>'Y' and a.lgpla='" + ls_locno + "' and a.lgpla=b.loc_no and io_status='N'";
                    sql += " order by a.status,a.modi_time";
                    dv = Common.ExecAsrsSelect(sql);
                    if (dv == null || dv.Count <= 0)
                    {
                        ls_error_memo = "   " + seq + ".3 æŸ¥è¯¢åº“存明细[asr_loc_detl]没有 !库位:" + ls_locno;
                        DisplayInfo("", "E", ls_error_memo);
                        goto re;
                    }
                    type = 2;
                    //return;
                }
                li_wrkno = Common.GetWrkno(0);
                string sqlDetl = "", sqlWaitIn = "";
                foreach (DataRowView drow in dv)
                {
                    string lgnum = drow[0].ToString();
                    string tanum = drow[1].ToString();
                    string tapos = drow[2].ToString();
                    string matnr = drow[3].ToString();
                    string maktx = drow[4].ToString();
                    string altme = drow[5].ToString();
                    string werks = drow[6].ToString();
                    sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,lgnum,tbnum,tbpos,matnr,maktx,altme,werks,zpallet) ";
                    sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','" + lgnum + "'," + tanum + "," + tapos + ", ";
                    sqlDetl += " '" + matnr + "','" + maktx + "','" + altme + "','" + werks + "','" + barcode + "');";
                    if (type == 1)
                    {
                        sqlWaitIn += " update cust_wait_check set status='Y' where lgnum='" + lgnum + "' and ivnum=" + tanum + " and ivpos=" + tapos + ";";
                    }
                    else
                    {
                        sqlWaitIn += " update cust_wait_check set status='Y' where lgpla='" + ls_locno + "';";
                    }
                }
                DisplayInfo("", "P", "   " + seq + ".1 æ­£åœ¨å¤„理待盘点资料!库位:" + ls_locno);
                int li_crnrow = int.Parse(ls_locno.Substring(0, 2));
                int li_crnno = (li_crnrow + 1) / 2;
                li_io_type = 107;
                li_e_stnNo = 4;
                li_stnNo = Common.getIoStaNo(li_io_type, li_crnno, li_e_stnNo);
                sql = sqlDetl;
                sql += "insert into asr_wrk_mast(wrk_no,io_time,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,barcode) ";
                sql += " values(" + li_wrkno + ",'" + ldt_date + "',11," + li_io_type + "," + li_crnno + ",13,'" + ls_locno + "', ";
                sql += " " + li_e_stnNo + "," + li_stnNo + ",'" + barcode + "'); ";
                sql += " update asr_loc_mast set loc_sts='P' where loc_no='" + ls_locno + "'; ";
                sql += sqlWaitIn;
                SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                sqlcmd.Transaction = sqltrans;
                try
                {
                    sqlcmd.ExecuteNonQuery();
                    sqltrans.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    //sqlcommon.Close();
                    ls_error_memo = "   " + seq + ".3 æ’入工作主档[asr_wrk_mast]错误 !库位:" + ls_locno + " å¼‚常:" + t.Message;
                    DisplayInfo("", "E", ls_error_memo);
                    goto re;
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqlconn.Dispose();
                }
                return;
            re:
                sql = "update cust_wait_check set status='X',modi_time='" + ldt_date + "' where lgpla='" + ls_locno + "'";
                bool result = Common.ExecAsrsModify(sql);
                if (!result)
                {
                    ls_error_memo = "   " + seq + ".4 æ›´æ–°ç›˜ç‚¹æ¡£å¤±è´¥!库位:" + ls_locno;
                    DisplayInfo("", "E", ls_error_memo);
                }
            }
            catch (Exception em)
            {
                ls_error_memo = "   " + seq + ".5 å¤„理盘点通知档生成盘点工作档失败:" + em.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// å¤„理工作档中工作状态为4和14、6的资料,更新库存档、待处理档
        /// </summary>
        public void ProcWorkMast(string seq)
        {
            string ls_error_memo = "", sql = "", ls_barcode = "";
            int li_wrk_no = 0, li_wrk_sts = 0, li_io_type = 0, li_sta_no = 0, li_source_sta_no = 0;//, li_wrk_model = 1;
            string ls_loc_no = "", ls_source_loc_no = "";//, ls_wmsId = "", ls_boxId = "";
            DateTime ldt_date = System.DateTime.Now, ldt_io_time;
            string ls_sheet_no = "", ls_empty_mk = "", ls_full_mk = "", ls_online_yn = "";
            int li_io_pri = 0, li_whs_type;
            DisplayInfo(seq, "N", "--处理工作档 (status=4,14)......");
            try
            {
                try
                {
                    DataView dv = Common.ExecAsrsSelect("select getdate() from sys_dual");
                    foreach (System.Data.DataRowView drow in dv)
                    {
                        ldt_date = Convert.ToDateTime(drow[0]);
                    }
                }
                catch (SqlException)
                {
                    return;
                }
                sql = "select wrk_no,sheet_no,wrk_sts,io_type,io_pri,empty_mk," +
                      " io_time,loc_no,sta_no,source_sta_no,source_loc_no,whs_type,online_yn,barcode" +
                      " from dbo.asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type <> 103 and io_type <> 104 and io_type <> 107 ) or (wrk_sts = 2 and io_type=6)" +
                      " order by upd_mk,io_time,wrk_no";
                DataView dv_wrkmast = Common.ExecAsrsSelect(sql);
                if (dv_wrkmast == null || dv_wrkmast.Count < 1)
                {
                    DisplayInfo("", "N", "   " + seq + ".1 å·¥ä½œæ¡£ [asr_wrk_mast] æ²¡æœ‰èµ„æ–™!");
                    return;
                }
                foreach (DataRowView drow_wrkmast in dv_wrkmast)
                {
                    li_wrk_no = Convert.ToInt32(drow_wrkmast[0]);
                    ls_sheet_no = drow_wrkmast[1].ToString();
                    li_wrk_sts = Convert.ToInt32(drow_wrkmast[2]);
                    li_io_type = Convert.ToInt32(drow_wrkmast[3]);
                    li_io_pri = Convert.ToInt32(drow_wrkmast[4]);
                    ls_empty_mk = drow_wrkmast[5].ToString();
                    ldt_io_time = Convert.ToDateTime(drow_wrkmast[6]);
                    ls_loc_no = drow_wrkmast[7].ToString();
                    li_sta_no = Convert.ToInt32(drow_wrkmast[8]);
                    li_source_sta_no = Convert.ToInt32(drow_wrkmast[9]);
                    ls_source_loc_no = drow_wrkmast[10].ToString();
                    //li_whs_type = Convert.ToInt32(drow_wrkmast[11]);
                    //ls_full_mk = drow_wrkmast[12].ToString();
                    ls_online_yn = drow_wrkmast[12].ToString();
                    ls_barcode = drow_wrkmast[13].ToString();
                    DisplayInfo("", "P", "   " + seq + ".2 å¤„理工作档:" + li_wrk_no.ToString());
                    SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                    sqlconn.Open();
                    SqlTransaction sqltrans = sqlconn.BeginTransaction();
                    if (li_wrk_sts == 4)
                    {
                        switch (li_io_type)
                        {
                            #region ç©ºæ‰˜ç›˜å…¥åº“
                            case 10:
                                sql = "update asr_loc_mast set loc_sts='D',io_time='" + ldt_date + "',modi_time='" + ldt_date + "'";
                                sql += " where loc_no='" + ls_loc_no + "' and (loc_sts = 'S' Or loc_sts = 'Q')";
                                SqlCommand cmd_10 = new SqlCommand(sql, sqlconn);
                                cmd_10.Transaction = sqltrans;
                                try
                                {
                                    cmd_10.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_10.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".3 å…¥åº“-更新库位状态异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  åº“位号:" + ls_loc_no + " å¼‚常:" + t.Message;
                                    DisplayInfo("", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                            #endregion
                            #region å…¨æ¿å…¥åº“
                            case 1:
                                ///检查库存明细档是否已存在数据
                                int li_count1 = 0;
                                sql = "";
                                try
                                {
                                    li_count1 = Common.ExecAsrsSelect1("select count(*) from asr_loc_detl where loc_no ='" + ls_loc_no + "'");
                                }
                                catch (Exception em)
                                {
                                    ls_error_memo = "   " + seq + ".4 æŸ¥è¯¢åº“存明细[asr_loc_detl]出错!工作号:" + li_wrk_no.ToString() + "!" + em.Message;
                                    DisplayInfo("", "E", ls_error_memo);
                                    goto re;
                                }
                                ///根据工作号,查询工作明细档物料编码
                                string sqlDetl = "";
                                string sqlWaitIn = "";
                                sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + li_wrk_no;
                                DataView dv_wrkdetl = Common.ExecAsrsSelect(sql);
                                if (dv_wrkdetl == null || dv_wrkdetl.Count < 1)
                                {
                                    DisplayInfo("", "E", "   " + seq + ".5 å·¥ä½œæ˜Žç»†æ¡£ [asr_wrk_detl] æ²¡æœ‰èµ„æ–™!");
                                    return;
                                }
                                foreach (DataRowView drow in dv_wrkdetl)
                                {
                                    string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = "";
                                    lgnum = drow[0].ToString();
                                    tbnum = drow[1].ToString();
                                    tbpos = drow[2].ToString();
                                    zmatid = drow[3].ToString();
                                    matnr = drow[4].ToString();
                                    maktx = drow[5].ToString();
                                    werks = drow[6].ToString();
                                    anfme = drow[7].ToString();
                                    altme = drow[8].ToString();
                                    zpallet = drow[9].ToString();
                                    bname = drow[10].ToString();
                                    string sqlLocDetl = "select anfme from asr_loc_detl where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'";
                                    DataView dvLocDetl = Common.ExecAsrsSelect(sqlLocDetl);
                                    if (dvLocDetl != null)
                                    {
                                        if (dvLocDetl.Count > 0)
                                        {//库存已有,更新数量
                                            sqlDetl = " update asr_loc_detl set anfme=anfme+" + anfme + " where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'; ";
                                            Common.ExecAsrsModify(sqlDetl);
                                        }
                                        else
                                        {//库存没有,插入
                                            sqlDetl = " insert into asr_loc_detl(loc_no,lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname) ";
                                            sqlDetl += " values('" + ls_loc_no + "','" + lgnum + "'," + tbnum + "," + tbpos + ",'" + zmatid + "', ";
                                            sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + anfme + ",'" + altme + "','" + ls_barcode + "','" + bname + "');";
                                            Common.ExecAsrsModify(sqlDetl);
                                        }
                                    }
                                    sqlWaitIn += " update cust_wait_pakin set io_status='Y' where lgnum='" + lgnum + "' and tbnum=" + tbnum + " and tbpos=" + tbpos + " and zmatid='" + zmatid + "';";
                                }
                                ///更新库存信息,插入库存明细档,并更新库存主档
                                sql = "";
                                if (li_count1 > 0)
                                {
                                    sql += "delete from asr_loc_detl where loc_no ='" + ls_loc_no + "';";
                                }
                                sql += " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'";
                                sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'S';";
                                //sql += sqlDetl;
                                sql += sqlWaitIn;
                                SqlCommand cmd_1 = new SqlCommand(sql, sqlconn);
                                cmd_1.Transaction = sqltrans;
                                try
                                {
                                    cmd_1.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_1.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".6 å…¥åº“-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  åº“位号:" + ls_loc_no + " !" + t.Message;
                                    DisplayInfo("", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                            #endregion
                            #region æ‹£æ–™å†å…¥åº“
                            case 53:
                                ///根据工作号,查询工作明细档物料编码
                                sqlDetl = "";
                                sqlWaitIn = "";
                                sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + li_wrk_no;
                                DataView dv_wrkdetl53 = Common.ExecAsrsSelect(sql);
                                if (dv_wrkdetl53 == null || dv_wrkdetl53.Count < 1)
                                {
                                    DisplayInfo("", "E", "   " + seq + ".6 å·¥ä½œæ˜Žç»†æ¡£ [asr_wrk_detl] æ²¡æœ‰èµ„æ–™!");
                                    return;
                                }
                                foreach (DataRowView drow in dv_wrkdetl53)
                                {
                                    string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = "";
                                    lgnum = drow[0].ToString();
                                    tbnum = drow[1].ToString();
                                    tbpos = drow[2].ToString();
                                    zmatid = drow[3].ToString();
                                    matnr = drow[4].ToString();
                                    maktx = drow[5].ToString();
                                    werks = drow[6].ToString();
                                    anfme = drow[7].ToString();
                                    altme = drow[8].ToString();
                                    zpallet = drow[9].ToString();
                                    bname = drow[10].ToString();
                                    sqlDetl += " update asr_loc_detl set anfme=anfme-" + anfme + " where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'";
                                    sqlWaitIn += " update cust_wait_pakout set io_status='Y' where lgnum='" + lgnum + "' and tanum=" + tbnum + " and tapos=" + tbpos + " and matnr=" + matnr + ";";
                                }
                                ///更新库存信息,插入库存明细档,并更新库存主档
                                sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'";
                                sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'Q';";
                                sql += sqlDetl;
                                sql += sqlWaitIn;
                                SqlCommand cmd_53 = new SqlCommand(sql, sqlconn);
                                cmd_53.Transaction = sqltrans;
                                try
                                {
                                    cmd_53.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_53.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".7 æ‹£æ–™ï¼æ›´æ–°åº“存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  åº“位号:" + ls_loc_no + " !" + t.Message;
                                    DisplayInfo("", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                            #endregion
                            #region å¹¶æ¿å†å…¥åº“
                            case 54:
                                ///根据工作号,查询工作明细档物料编码
                                sqlDetl = "";
                                sqlWaitIn = "";
                                sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + li_wrk_no;
                                DataView dv_wrkdetl54 = Common.ExecAsrsSelect(sql);
                                if (dv_wrkdetl54 == null || dv_wrkdetl54.Count < 1)
                                {
                                    DisplayInfo("", "E", "   " + seq + ".8 å·¥ä½œæ˜Žç»†æ¡£ [asr_wrk_detl] æ²¡æœ‰èµ„æ–™!");
                                    return;
                                }
                                foreach (DataRowView drow in dv_wrkdetl54)
                                {
                                    string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = "";
                                    lgnum = drow[0].ToString();
                                    tbnum = drow[1].ToString();
                                    tbpos = drow[2].ToString();
                                    zmatid = drow[3].ToString();
                                    matnr = drow[4].ToString();
                                    maktx = drow[5].ToString();
                                    werks = drow[6].ToString();
                                    anfme = drow[7].ToString();
                                    altme = drow[8].ToString();
                                    zpallet = drow[9].ToString();
                                    bname = drow[10].ToString();
                                    string sql1 = "select anfme from asr_loc_detl where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'";
                                    DataView dv_locdetl54 = Common.ExecAsrsSelect(sql1);
                                    if (dv_locdetl54 != null && dv_locdetl54.Count > 0)
                                    {
                                        sqlDetl += " update asr_loc_detl set anfme=anfme+" + anfme + " where loc_no='" + ls_loc_no + "' and matnr='" + matnr + "'";
                                        //sqlWaitIn += " update cust_wait_pakin set io_status='Y' where matnr=" + matnr + ";";
                                    }
                                    else
                                    {
                                        sqlDetl += " insert into asr_loc_detl(loc_no,lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname) ";
                                        sqlDetl += " values('" + ls_loc_no + "','" + lgnum + "'," + tbnum + "," + tbpos + ",'" + zmatid + "', ";
                                        sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + anfme + ",'" + altme + "','" + ls_barcode + "','" + bname + "');";
                                    }
                                    sqlWaitIn += " update cust_wait_pakout set io_status='Y' where lgnum='" + lgnum + "' and tanum=" + tbnum + " and tapos=" + tbpos + ";";
                                }
                                ///更新库存信息,插入库存明细档,并更新库存主档
                                //sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'";
                                sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "' ";
                                sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'Q';";
                                sql += sqlDetl;
                                sql += sqlWaitIn;
                                SqlCommand cmd_54 = new SqlCommand(sql, sqlconn);
                                cmd_54.Transaction = sqltrans;
                                try
                                {
                                    cmd_54.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_54.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".9 å¹¶æ¿å†å…¥åº“-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  åº“位号:" + ls_loc_no + " !" + t.Message;
                                    DisplayInfo("", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                            #endregion
                            #region ç›˜ç‚¹å†å…¥åº“
                            case 57:
                                ///根据工作号,查询工作明细档物料编码
                                sqlDetl = "";
                                sqlWaitIn = "";
                                sql = "select lgnum,tbnum,tbpos,matnr from asr_wrk_detl where wrk_no=" + li_wrk_no;
                                DataView dv_wrkdetl57 = Common.ExecAsrsSelect(sql);
                                if (dv_wrkdetl57 == null || dv_wrkdetl57.Count < 1)
                                {
                                    DisplayInfo("", "E", "   " + seq + ".10 å·¥ä½œæ˜Žç»†æ¡£ [asr_wrk_detl] æ²¡æœ‰èµ„æ–™!");
                                    return;
                                }
                                foreach (DataRowView drow in dv_wrkdetl57)
                                {
                                    string lgnum = "", tbnum = "", tbpos = "", matnr = "";
                                    lgnum = drow[0].ToString();
                                    tbnum = drow[1].ToString();
                                    tbpos = drow[2].ToString();
                                    matnr = drow[3].ToString();
                                    //sqlWaitIn += " update cust_wait_check set io_status='Y' where lgnum='" + lgnum + "' and ivnum=" + tbnum + " and ivpos=" + tbpos + ";";
                                }
                                sqlWaitIn += " update cust_wait_check set io_status='Y' where lgpla='" + ls_loc_no + "';";
                                ///更新库存信息,插入库存明细档,并更新库存主档
                                sql = " update asr_loc_mast set loc_sts='F',io_time='" + ldt_date + "',modi_time='" + ldt_date + "',barcode='" + ls_barcode + "'";
                                sql += " where loc_no='" + ls_loc_no + "' and loc_sts = 'Q';";
                                sql += sqlDetl;
                                sql += sqlWaitIn;
                                SqlCommand cmd_57 = new SqlCommand(sql, sqlconn);
                                cmd_57.Transaction = sqltrans;
                                try
                                {
                                    cmd_57.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_57.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".11 ç›˜ç‚¹å†å…¥åº“-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  åº“位号:" + ls_loc_no + " !" + t.Message;
                                    DisplayInfo("", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                            #endregion
                            #region åº“位移转
                            case 11:
                                sql = "";
                                string ls_loc_sts = "";
                                if (ls_empty_mk == "N")
                                {
                                    ls_loc_sts = "F";
                                    sql += "Update dbo.asr_loc_detl set loc_no='" + ls_loc_no + "',modi_time='" + ldt_date + "' where loc_no='" + ls_source_loc_no + "';";
                                }
                                else
                                {
                                    ls_loc_sts = "D";
                                }
                                sql += " Update dbo.asr_loc_mast set loc_sts='O',barcode='',io_time='" + ldt_date + "'  where loc_no='" + ls_source_loc_no + "'; ";
                                sql += " Update dbo.asr_loc_mast set loc_sts='" + ls_loc_sts + "',barcode='" + ls_barcode + "',io_time='" + ldt_date + "' where loc_no='" + ls_loc_no + "';";
                                sql += " update cust_wait_pakout set io_status='Y' where vlpla='" + ls_source_loc_no + "' and nlpla='" + ls_loc_no + "'";
                                SqlCommand cmd_11 = new SqlCommand(sql, sqlconn);
                                cmd_11.Transaction = sqltrans;
                                try
                                {
                                    cmd_11.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_11.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".12 åº“位移转-更新库存异常 [asr_loc_mast] !工作号:" + li_wrk_no.ToString() + "  åº“位号:" + ls_loc_no + " !" + t.Message;
                                    DisplayInfo("", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                            #endregion
                        }
                        sql = "update asr_wrk_mast set wrk_sts=5,modi_time='" + ldt_date + "' where wrk_no=" + li_wrk_no + "; ";
                        SqlCommand cmd_wrk = new SqlCommand(sql, sqlconn);
                        cmd_wrk.Transaction = sqltrans;
                        try
                        {
                            cmd_wrk.ExecuteNonQuery();
                        }
                        catch (SqlException t)
                        {
                            sqltrans.Rollback();
                            cmd_wrk.Dispose();
                            sqlconn.Dispose();
                            ls_error_memo = "   " + seq + ".13 æ›´æ–°å·¥ä½œçŠ¶æ€å¼‚å¸¸ [asr_wrk_mast] !工作号:" + li_wrk_no.ToString() + " æ—¶é—´:" + ldt_date.ToString() + " å¼‚常:" + t.Message;
                            DisplayInfo("", "E", ls_error_memo);
                            goto re;
                        }
                    }
                    else if (li_wrk_sts == 14)
                    {
                        switch (li_io_type)
                        {
                            #region å…¨æ¿å‡ºåº“
                            case 101:
                                ///根据工作号,查询工作明细档物料编码
                                string sqlWaitIn = "";
                                sql = "select lgnum,tbnum,tbpos,matnr from asr_wrk_detl where wrk_no=" + li_wrk_no;
                                DataView dv_wrkdetl = Common.ExecAsrsSelect(sql);
                                if (dv_wrkdetl == null || dv_wrkdetl.Count < 1)
                                {
                                    DisplayInfo("", "E", "   " + seq + ".14 å·¥ä½œæ˜Žç»†æ¡£ [asr_wrk_detl] æ²¡æœ‰èµ„æ–™!");
                                    goto re;
                                }
                                foreach (DataRowView drow in dv_wrkdetl)
                                {
                                    string lgnum = drow[0].ToString();
                                    string tbnum = drow[1].ToString();
                                    string tbpos = drow[2].ToString();
                                    string matnr = drow[3].ToString();
                                    sqlWaitIn += " update cust_wait_pakout set io_status='Y' where lgnum='" + lgnum + "' and tanum=" + tbnum + " and tapos=" + tbpos + " and vlpla=" + ls_source_loc_no + ";";
                                }
                                sql = "delete from asr_loc_detl where loc_no ='" + ls_source_loc_no + "';";
                                sql += " update asr_loc_mast set loc_sts='O',io_time='" + ldt_date + "',barcode=null";
                                sql += " where loc_no='" + ls_source_loc_no + "' and loc_sts = 'R';";
                                sql += sqlWaitIn;
                                SqlCommand cmd_101 = new SqlCommand(sql, sqlconn);
                                cmd_101.Transaction = sqltrans;
                                try
                                {
                                    cmd_101.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_101.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".15 å‡ºåº“-更新库位状态异常[asr_loc_mast] !库位号:" + ls_source_loc_no + " å¼‚常:" + t.Message;
                                    DisplayInfo("", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                            #endregion
                            #region ç©ºæ¿å‡ºåº“
                            case 110:
                                sql = "update asr_loc_mast set loc_sts='O',io_time='" + ldt_date + "'";
                                sql += " where loc_no='" + ls_source_loc_no + "' and loc_sts = 'R'";
                                SqlCommand cmd_110 = new SqlCommand(sql, sqlconn);
                                cmd_110.Transaction = sqltrans;
                                try
                                {
                                    cmd_110.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_110.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".16 å‡ºåº“-更新库位状态异常[asr_loc_mast] !库位号:" + ls_source_loc_no + " å¼‚常:" + t.Message;
                                    DisplayInfo("", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                            #endregion
                        }
                        sql = "update asr_wrk_mast set wrk_sts=15,modi_time='" + ldt_date + "' where wrk_no=" + li_wrk_no + "; ";
                        SqlCommand cmd_wrk1 = new SqlCommand(sql, sqlconn);
                        cmd_wrk1.Transaction = sqltrans;
                        try
                        {
                            cmd_wrk1.ExecuteNonQuery();
                        }
                        catch (SqlException t)
                        {
                            sqltrans.Rollback();
                            cmd_wrk1.Dispose();
                            sqltrans.Dispose();
                            ls_error_memo = "   " + seq + ".17 æ›´æ–°å·¥ä½œçŠ¶æ€å¼‚å¸¸ [asr_wrk_mast] !工作号:" + li_wrk_no.ToString() + " å¼‚常:" + t.Message;
                            DisplayInfo("", "E", ls_error_memo);
                            goto re;
                        }
                    }
                    sqltrans.Commit();
                    sqlconn.Dispose();
                }
            }
            catch (SqlException t)
            {
                ls_error_memo = "   " + seq + ".18 å¤„理工作档数据失败! å¼‚常:" + t.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        re:
            if (ls_error_memo != "")
            {
                try
                {
                    bool bl = Common.ExecAsrsModify("update dbo.asr_wrk_mast set upd_mk ='X',error_time='" + ldt_date + "',error_memo='" + ls_error_memo + "'  where wrk_no =" + li_wrk_no + "");
                }
                catch (SqlException t)
                {
                    ls_error_memo = "   " + seq + ".19 æ›´æ–°å·¥ä½œä¸»æ¡£çŠ¶æ€ [asr_wrk_mast] å¼‚常! å·¥ä½œå·:" + li_wrk_no.ToString() + " æ—¶é—´:" + ldt_date.ToString();
                    DisplayInfo("", "E", ls_error_memo);
                    return;
                }
            }
        }
        /// <summary>
        /// å¤„理工作档中工作状态为5和15的资料,转历史档
        /// </summary>
        public void ProcWorkToLog(string seq)
        {
            string ls_error_memo = "";
            DisplayInfo(seq, "N", "--处理工作档转历史档......");
            int wrkno = 0;
            try
            {
                string sql = "select top 1 wrk_no from asr_wrk_mast where wrk_sts=5 ";// or wrk_sts=15 or (wrk_sts=15 and io_type=110) ";
                sql += " or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp))";
                sql += " or (wrk_sts=15 and dateadd(mi,15,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp))";
                sql += " or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp)) ";
                //sql += " or (wrk_sts=15 and dateadd(day,1,io_time) <= getdate() and crn_end_time is null) ";
                //sql += " or (wrk_sts=15 and dateadd(hh,1,crn_end_time) <= getdate()) ";
                //sql += " or (wrk_sts=15 and wrk_no not in (select wrk_no from asr_bas_devp))";
                sql += " order by io_time,wrk_no asc";
                DataView dv = Common.ExecAsrsSelect(sql);
                if (dv.Count <= 0)
                {
                    DisplayInfo("", "N", "   " + seq + ".1 å·¥ä½œæ¡£ [asr_wrk_mast] æ²¡æœ‰èµ„料处理!");
                    return;
                }
                foreach (DataRowView drow in dv)
                {
                    wrkno = int.Parse(drow[0].ToString());
                }
                DisplayInfo("", "P", "   " + seq + ".2 æ­£åœ¨å¤„理转历史档" + wrkno);
                sql = "insert into asr_wrk_mast_log select * from asr_wrk_mast where wrk_no=" + wrkno + "; ";
                //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_devp) ";
                //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_crnp);";
                sql += " delete from asr_wrk_mast where wrk_no=" + wrkno + "; ";
                sql += " insert into asr_wrk_detl_log select * from asr_wrk_detl where wrk_no=" + wrkno + "; ";
                sql += " delete from asr_wrk_detl where wrk_no=" + wrkno + "; ";
                //sql += " update asr_wrk_mast set wrk_sts=16 where wrk_sts=15 and dateadd(day,1,io_time) <= getdate();";
                //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_devp) ";
                //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_crnp);";
                SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Transaction = sqltrans;
                string[] arraySql = sql.Split(';');
                try
                {
                    for (int i = 0; i < arraySql.Length; i++)
                    {
                        if (arraySql[i] != "")
                        {
                            sqlcmd.CommandText = arraySql[i];
                            sqlcmd.Connection = sqlconn;
                            sqlcmd.Transaction = sqltrans;
                            int result = sqlcmd.ExecuteNonQuery();
                        }
                    }
                    sqltrans.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    ls_error_memo = "   " + seq + ".3 å·¥ä½œæ¡£[asr_wrk_mast]转历史档错误 ! å¼‚常:" + t.Message;
                    DisplayInfo("", "E", ls_error_memo);
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqltrans.Dispose();
                    sqlconn.Dispose();
                }
                return;
            }
            catch (Exception t)
            {
                ls_error_memo = "   " + seq + ".4 å¤„理工作档转历史档失败! å¼‚常:" + t.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// å¤„理堆垛机、输送机命令,转历史档
        /// </summary>
        public void ProcDevCommandToLog(string seq)
        {
            string ls_error_memo = "";
            DisplayInfo(seq, "N", "--处理堆垛机&PLC命令转历史档......");
            try
            {
                string sql = "insert into asr_stk_hplc ";
                sql += " select * from asr_stk_plcm where dateadd(day,7,appe_time) <= getdate();";
                sql += " delete from asr_stk_plcm where dateadd(day,7,appe_time) <= getdate();";
                SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Transaction = sqltrans;
                string[] arraySql = sql.Split(';');
                try
                {
                    for (int i = 0; i < arraySql.Length; i++)
                    {
                        if (arraySql[i] != "")
                        {
                            sqlcmd.CommandText = arraySql[i];
                            sqlcmd.Connection = sqlconn;
                            sqlcmd.Transaction = sqltrans;
                            int result = sqlcmd.ExecuteNonQuery();
                        }
                    }
                    sqltrans.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    //sqlcommon.Close();
                    ls_error_memo = "   " + seq + ".1 å †åž›æœº&PLC命令转历史档错误 ! å¼‚常:" + t.Message;
                    DisplayInfo("", "E", ls_error_memo);
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqltrans.Dispose();
                    sqlconn.Dispose();
                }
                return;
            }
            catch (Exception t)
            {
                ls_error_memo = "   " + seq + ".2 å †åž›æœº&PLC命令转历史档失败! å¼‚常:" + t.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// è½¬å·²å®Œæˆç‰©æ–™ä¿¡æ¯åˆ°åŽ†å²æ¡£
        /// </summary>
        public void ProcMatCodeToLog(string seq)
        {
            string ls_error_memo = "", mat_no = "";
            DisplayInfo(seq, "N", "--处理已完成物料数据转历史档......");
            try
            {
                string condition = " and mat_no not in (select mat_no from asr_loc_detl) and mat_no not in (select mat_no from asr_wrk_detl) ";
                //condition += " and mat_no not in (select mat_no from cust_wait_pakout) ";
                string sql0 = " select top 1 mat_no from bas_mat_code where status>1 " + condition + " ;";
                DataView dv = Common.ExecAsrsSelect(sql0);
                if (dv.Count <= 0)
                {
                    DisplayInfo("", "N", "   " + seq + ".1 ç‰©æ–™æ¡£ [bas_mat_code] æ²¡æœ‰èµ„料处理!");
                    return;
                }
                foreach (DataRowView drow in dv)
                {
                    mat_no = drow[0].ToString();
                }
                string sql = "delete from bas_mat_code_log where mat_no='" + mat_no + "';";
                sql += " insert into bas_mat_code_log ";
                sql += " select * from bas_mat_code where status>1 " + condition + " ;";
                sql += " delete from bas_mat_code where status>1 " + condition + " ;";
                sql += " delete from bas_mat_code where status=0 and dateadd(hh,2,modi_time) <= getdate() " + condition + " ;";
                SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Transaction = sqltrans;
                string[] arraySql = sql.Split(';');
                try
                {
                    for (int i = 0; i < arraySql.Length; i++)
                    {
                        if (arraySql[i] != "")
                        {
                            sqlcmd.CommandText = arraySql[i];
                            sqlcmd.Connection = sqlconn;
                            sqlcmd.Transaction = sqltrans;
                            int result = sqlcmd.ExecuteNonQuery();
                        }
                    }
                    sqltrans.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    //sqlcommon.Close();
                    ls_error_memo = "   " + seq + ".1 å·²å®Œæˆç‰©æ–™æ•°æ®è½¬åŽ†å²æ¡£é”™è¯¯ ! å¼‚常:" + t.Message;
                    DisplayInfo("", "E", ls_error_memo);
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqlconn.Dispose();
                }
                return;
            }
            catch (Exception t)
            {
                ls_error_memo = "   " + seq + ".2 å·²å®Œæˆç‰©æ–™æ•°æ®è½¬åŽ†å²æ¡£å¤±è´¥! å¼‚常:" + t.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// è½¬å·²å®Œæˆå¾…出库档信息到历史档
        /// </summary>
        public void ProcWaitOutToLog(string seq)
        {
            string ls_error_memo = "", sql = "";
            DisplayInfo(seq, "N", "--处理已完成入/出库档数据转历史档......");
            try
            {
                string sql0 = " select lgnum,tbnum,tbpos from cust_wait_pakin where io_status='F';";
                DataView dv = Common.ExecAsrsSelect(sql0);
                if (dv == null || dv.Count <= 0)
                {
                    DisplayInfo("", "N", "   " + seq + ".1 å…¥åº“æ¡£ [cust_wait_pakin] æ²¡æœ‰èµ„料处理!");
                }
                else
                {
                    foreach (DataRowView drow in dv)
                    {
                        string lgnum = drow[0].ToString();
                        string tanum = drow[1].ToString();
                        string tapos = drow[2].ToString();
                        sql = "insert into cust_wait_pakin_log ";
                        sql += " select * from cust_wait_pakin where lgnum='" + lgnum + "' and tbnum=" + tanum + " and tbpos=" + tapos + "; ";
                        sql += " delete from cust_wait_pakin where lgnum='" + lgnum + "' and tbnum=" + tanum + " and tbpos=" + tapos + "; ";
                    }
                }
                sql0 = " select lgnum,tanum,tapos from cust_wait_pakout where io_status='F';";
                dv = Common.ExecAsrsSelect(sql0);
                if (dv == null || dv.Count <= 0)
                {
                    DisplayInfo("", "N", "   " + seq + ".2 å‡ºåº“æ¡£ [cust_wait_pakout] æ²¡æœ‰èµ„料处理!");
                }
                else
                {
                    foreach (DataRowView drow in dv)
                    {
                        string lgnum = drow[0].ToString();
                        string tanum = drow[1].ToString();
                        string tapos = drow[2].ToString();
                        sql = "insert into cust_wait_pakout_log ";
                        sql += " select * from cust_wait_pakout where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + "; ";
                        sql += " delete from cust_wait_pakout where lgnum='" + lgnum + "' and tanum=" + tanum + " and tapos=" + tapos + "; ";
                    }
                }
                sql0 = " select lgnum,ivnum,ivpos from cust_wait_check where io_status='Y';";
                dv = Common.ExecAsrsSelect(sql0);
                if (dv == null || dv.Count <= 0)
                {
                    DisplayInfo("", "N", "   " + seq + ".3 ç›˜ç‚¹æ¡£ [cust_wait_check] æ²¡æœ‰èµ„料处理!");
                }
                else
                {
                    foreach (DataRowView drow in dv)
                    {
                        string lgnum = drow[0].ToString();
                        string tanum = drow[1].ToString();
                        string tapos = drow[2].ToString();
                        sql = "insert into cust_wait_check_log ";
                        sql += " select * from cust_wait_check where lgnum='" + lgnum + "' and ivnum=" + tanum + " and ivpos=" + tapos + "; ";
                        sql += " delete from cust_wait_check where lgnum='" + lgnum + "' and ivnum=" + tanum + " and ivpos=" + tapos + "; ";
                    }
                }
                if (sql == "")
                {
                    return;
                }
                SqlConnection sqlconn1 = new SqlConnection(Common.sqlcon);
                sqlconn1.Open();
                SqlTransaction sqltrans1 = sqlconn1.BeginTransaction();
                SqlCommand sqlcmd1 = new SqlCommand();
                sqlcmd1.Transaction = sqltrans1;
                string[] arraySql1 = sql.Split(';');
                try
                {
                    for (int i = 0; i < arraySql1.Length; i++)
                    {
                        if (arraySql1[i] != "")
                        {
                            sqlcmd1.CommandText = arraySql1[i];
                            sqlcmd1.Connection = sqlconn1;
                            sqlcmd1.Transaction = sqltrans1;
                            int result = sqlcmd1.ExecuteNonQuery();
                        }
                    }
                    sqltrans1.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans1.Rollback();
                    //sqlcommon.Close();
                    ls_error_memo = "   " + seq + ".1 å·²å®Œæˆç‰©æ–™æ•°æ®è½¬åŽ†å²æ¡£é”™è¯¯ ! å¼‚常:" + t.Message;
                    DisplayInfo("", "E", ls_error_memo);
                }
                finally
                {
                    sqlcmd1.Dispose();
                    sqlconn1.Dispose();
                }
                return;
            }
            catch (Exception t)
            {
                ls_error_memo = "   " + seq + ".2 å·²å®Œæˆå‡ºåº“数据转历史档失败! å¼‚常:" + t.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// åˆ é™¤è¶…过半年的历史档信息
        /// </summary>
        public void ProcOverYearLog(string seq)
        {
            string ls_error_memo = "";
            DisplayInfo(seq, "N", "--处理超过半年历史档信息......");
            try
            {
                string sql = "delete from asr_stk_hplc where dateadd(day,180,appe_time) <= getdate(); ";
                sql += " delete from sys_tts_mast where dateadd(day,180,modi_time) <= getdate();";
                sql += " delete from asr_wrk_detl_log where dateadd(day,360,appe_time) <= getdate();";
                sql += " delete from asr_wrk_mast_log where dateadd(day,360,appe_time) <= getdate();";
                sql += " delete from cust_wait_pakout_log where dateadd(day,360,appe_time) <= getdate();";
                sql += " delete from bas_mat_code_log where dateadd(day,360,appe_time) <= getdate();";
                SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand();
                sqlcmd.Transaction = sqltrans;
                string[] arraySql = sql.Split(';');
                try
                {
                    for (int i = 0; i < arraySql.Length; i++)
                    {
                        if (arraySql[i] != "")
                        {
                            sqlcmd.CommandText = arraySql[i];
                            sqlcmd.Connection = sqlconn;
                            sqlcmd.Transaction = sqltrans;
                            int result = sqlcmd.ExecuteNonQuery();
                        }
                    }
                    sqltrans.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    //sqlcommon.Close();
                    ls_error_memo = "   " + seq + ".1 å †åž›æœº&PLC命令转历史档错误 ! å¼‚常:" + t.Message;
                    DisplayInfo("", "E", ls_error_memo);
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqltrans.Dispose();
                    sqlconn.Dispose();
                }
                return;
            }
            catch (Exception t)
            {
                ls_error_memo = "   " + seq + ".2 å †åž›æœº&PLC命令转历史档失败! å¼‚常:" + t.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// å¤„理库存档中库位状态为D O但是有明细的数据,清空明细
        /// </summary>
        private void ProcErrorStockData(string seq)
        {
            string ls_error_memo = "";
            string loc_no = "", mat_no = "";
            DisplayInfo(seq, "N", "--处理库存档中异常库存信息......");
            try
            {
                string sqlDetl = "delete from asr_loc_detl where anfme <= 0;";
                Common.ExecAsrsModify(sqlDetl);
                string sql = "SELECT a.loc_no,b.matnr FROM asr_loc_mast a,asr_loc_detl b where a.loc_no=b.loc_no ";
                sql += " and (a.loc_sts='O' or a.loc_sts='D') ";
                DataView dv_stkDetl = Common.ExecAsrsSelect(sql);
                if (dv_stkDetl == null || dv_stkDetl.Count < 1)
                {
                    return;
                }
                foreach (DataRowView drow_stkDetl in dv_stkDetl)
                {
                    loc_no = drow_stkDetl[0].ToString();
                    mat_no = drow_stkDetl[1].ToString();
                    string sql0 = " delete from asr_loc_detl where loc_no='" + loc_no + "'; ";
                    SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                    sqlconn.Open();
                    SqlTransaction sqltrans = sqlconn.BeginTransaction();
                    SqlCommand sqlcmd = new SqlCommand();
                    sqlcmd.Transaction = sqltrans;
                    string[] arraySql = sql0.Split(';');
                    try
                    {
                        for (int i = 0; i < arraySql.Length; i++)
                        {
                            if (arraySql[i] != "")
                            {
                                sqlcmd.CommandText = arraySql[i];
                                sqlcmd.Connection = sqlconn;
                                sqlcmd.Transaction = sqltrans;
                                int result = sqlcmd.ExecuteNonQuery();
                            }
                        }
                        sqltrans.Commit();
                    }
                    catch (SqlException t)
                    {
                        sqltrans.Rollback();
                        //sqlcommon.Close();
                        ls_error_memo = "   " + seq + ".1 å¤„理库存档中异常库存信息错误 ! å¼‚常:" + t.Message;
                        DisplayInfo("", "E", ls_error_memo);
                    }
                    finally
                    {
                        sqlcmd.Dispose();
                        sqltrans.Dispose();
                        sqlconn.Dispose();
                    }
                }
                return;
            }
            catch (Exception t)
            {
                ls_error_memo = "   " + seq + ".2 å¤„理库存档中异常库存信息失败! å¼‚常:" + t.Message;
                DisplayInfo("", "E", ls_error_memo);
            }
        }
        #endregion
        /// <summary>
        /// å›žæŠ¥ä¸»çº¿ç¨‹
        /// </summary>
        private void ThreadTask()
        {
            DisplayInfo("", "N", "---------------系统运行中-------------");
            while (true)
            {
                try
                {
                    //生成出库工作档
                    ProcOutToWorkData("1");
                    ProcLocToWorkData("11");
                    //处理工作档状态4、14、6的资料
                    ProcWorkMast("2");
                    //工作档转历史档
                    ProcWorkToLog("3");
                    //堆垛机&PLC命令转历史档
                    ProcDevCommandToLog("4");
                    //转已完成物料信息到历史档
                    //ProcMatCodeToLog("5");
                    //转出库完成待出库档数据到历史档
                    ProcCheckToWorkData("5");
                    //转出库完成待出库档数据到历史档
                    ProcWaitOutToLog("6");
                    //删除超过半年历史档
                    ProcOverYearLog("7");
                    ProcErrorStockData("8");
                    Thread.Sleep(3000);
                }
                catch (Exception em)
                {
                    Common.WriteLogFile("WcsError", "UpdateThread/ThreadTask--回报主线程循环出错:" + em.Message);
                }
            }
        }
    }
}
version/STWCSMapEditor/WCS/WCS.csproj
New file
@@ -0,0 +1,267 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProductVersion>9.0.30729</ProductVersion>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectGuid>{9E1CF5D3-6566-4636-AE12-C837971242CA}</ProjectGuid>
    <OutputType>WinExe</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>WCS</RootNamespace>
    <AssemblyName>WCS</AssemblyName>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <FileUpgradeFlags>
    </FileUpgradeFlags>
    <UpgradeBackupLocation>
    </UpgradeBackupLocation>
    <OldToolsVersion>3.5</OldToolsVersion>
    <PublishUrl>发布\</PublishUrl>
    <Install>true</Install>
    <InstallFrom>Disk</InstallFrom>
    <UpdateEnabled>false</UpdateEnabled>
    <UpdateMode>Foreground</UpdateMode>
    <UpdateInterval>7</UpdateInterval>
    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
    <UpdatePeriodically>false</UpdatePeriodically>
    <UpdateRequired>false</UpdateRequired>
    <MapFileExtensions>true</MapFileExtensions>
    <ApplicationRevision>0</ApplicationRevision>
    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
    <IsWebBootstrapper>false</IsWebBootstrapper>
    <UseApplicationTrust>false</UseApplicationTrust>
    <BootstrapperEnabled>true</BootstrapperEnabled>
    <TargetFrameworkProfile />
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <PlatformTarget>x86</PlatformTarget>
    <Prefer32Bit>false</Prefer32Bit>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <Prefer32Bit>false</Prefer32Bit>
  </PropertyGroup>
  <PropertyGroup>
    <ApplicationIcon>System Tools XP.ico</ApplicationIcon>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="com.force.json, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>bin\Debug\com.force.json.dll</HintPath>
    </Reference>
    <Reference Include="CSkin">
      <HintPath>..\..\..\CSkin 16.1.14.3\CSkin 16.1.14.3\CSkin 4.0\CSkin.dll</HintPath>
    </Reference>
    <Reference Include="DevComponents.DotNetBar.SuperGrid, Version=10.9.0.4, Culture=neutral, PublicKeyToken=c39c3242a43eee2b, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>bin\Debug\DevComponents.DotNetBar.SuperGrid.dll</HintPath>
    </Reference>
    <Reference Include="DevComponents.DotNetBar2, Version=10.9.0.4, Culture=neutral, PublicKeyToken=c39c3242a43eee2b, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\..\Windows\assembly\GAC_MSIL\DevComponents.DotNetBar2\10.9.0.4__7eb7c3a35b91de04\DevComponents.DotNetBar2.dll</HintPath>
    </Reference>
    <Reference Include="HslCommunication, Version=7.0.0.0, Culture=neutral, PublicKeyToken=cdb2261fa039ed67, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>bin\Debug\HslCommunication.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.VisualBasic" />
    <Reference Include="Microsoft.VisualBasic.PowerPacks.Vs, Version=10.0.0.0" />
    <Reference Include="Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>bin\Debug\Oracle.ManagedDataAccess.dll</HintPath>
    </Reference>
    <Reference Include="System" />
    <Reference Include="System.Core">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Design" />
    <Reference Include="System.Xml.Linq">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Data.DataSetExtensions">
      <RequiredTargetFramework>3.5</RequiredTargetFramework>
    </Reference>
    <Reference Include="System.Data" />
    <Reference Include="System.Deployment" />
    <Reference Include="System.Drawing" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xml" />
    <Reference Include="timerlabel, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" />
  </ItemGroup>
  <ItemGroup>
    <Compile Include="BarcodeThread.cs" />
    <Compile Include="Common.cs" />
    <Compile Include="CraneThread.cs" />
    <Compile Include="crndisplay.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="crndisplay.Designer.cs">
      <DependentUpon>crndisplay.cs</DependentUpon>
    </Compile>
    <Compile Include="exit.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="exit.Designer.cs">
      <DependentUpon>exit.cs</DependentUpon>
    </Compile>
    <Compile Include="Form1.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="Form1.Designer.cs">
      <DependentUpon>Form1.cs</DependentUpon>
    </Compile>
    <Compile Include="Form2.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="Form2.Designer.cs">
      <DependentUpon>Form2.cs</DependentUpon>
    </Compile>
    <Compile Include="Form3.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="Form3.Designer.cs">
      <DependentUpon>Form3.cs</DependentUpon>
    </Compile>
    <Compile Include="Form4.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="Form4.Designer.cs">
      <DependentUpon>Form4.cs</DependentUpon>
    </Compile>
    <Compile Include="HttpPostHelper.cs" />
    <Compile Include="LedThread.cs" />
    <Compile Include="PlcAThread.cs" />
    <Compile Include="PlcBThread.cs" />
    <Compile Include="plcset.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="plcset.Designer.cs">
      <DependentUpon>plcset.cs</DependentUpon>
    </Compile>
    <Compile Include="Program.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <EmbeddedResource Include="crndisplay.resx">
      <DependentUpon>crndisplay.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="exit.resx">
      <DependentUpon>exit.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="Form1.resx">
      <DependentUpon>Form1.cs</DependentUpon>
      <SubType>Designer</SubType>
    </EmbeddedResource>
    <EmbeddedResource Include="Form2.resx">
      <DependentUpon>Form2.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="Form3.resx">
      <DependentUpon>Form3.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="Form4.resx">
      <DependentUpon>Form4.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="plcset.resx">
      <DependentUpon>plcset.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
      <SubType>Designer</SubType>
    </EmbeddedResource>
    <EmbeddedResource Include="stndisplay.resx">
      <DependentUpon>stndisplay.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="warn.resx">
      <DependentUpon>warn.cs</DependentUpon>
    </EmbeddedResource>
    <EmbeddedResource Include="warn1.resx">
      <DependentUpon>warn1.cs</DependentUpon>
    </EmbeddedResource>
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
      <DesignTime>True</DesignTime>
    </Compile>
    <None Include="app.config" />
    <None Include="Properties\Settings.settings">
      <Generator>SettingsSingleFileGenerator</Generator>
      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
    </None>
    <Compile Include="Properties\Settings.Designer.cs">
      <AutoGen>True</AutoGen>
      <DependentUpon>Settings.settings</DependentUpon>
      <DesignTimeSharedInput>True</DesignTimeSharedInput>
    </Compile>
    <Compile Include="ScaleComThread.cs">
      <SubType>Code</SubType>
    </Compile>
    <Compile Include="ScaleTcpThread.cs" />
    <Compile Include="stndisplay.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="stndisplay.Designer.cs">
      <DependentUpon>stndisplay.cs</DependentUpon>
    </Compile>
    <Compile Include="UpdateThread.cs" />
    <Compile Include="warn.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="warn.Designer.cs">
      <DependentUpon>warn.cs</DependentUpon>
    </Compile>
    <Compile Include="warn1.cs">
      <SubType>Form</SubType>
    </Compile>
    <Compile Include="warn1.Designer.cs">
      <DependentUpon>warn1.cs</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <None Include="bin\Debug\image\sta_l.png" />
  </ItemGroup>
  <ItemGroup>
    <None Include="bin\Debug\image\sta_b.png" />
  </ItemGroup>
  <ItemGroup>
    <None Include="bin\Debug\image\question.png" />
  </ItemGroup>
  <ItemGroup>
    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
      <Install>false</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
      <Visible>False</Visible>
      <ProductName>.NET Framework 3.5 SP1</ProductName>
      <Install>true</Install>
    </BootstrapperPackage>
  </ItemGroup>
  <ItemGroup>
    <None Include="bin\Debug\image\fork_l.png" />
    <None Include="bin\Debug\image\info.PNG" />
    <None Include="bin\Debug\image\warn.png" />
    <Content Include="System Tools XP.ico" />
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target>
  -->
</Project>
version/STWCSMapEditor/WCS/WCS.csproj.user
New file
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
  <PropertyGroup>
    <ProjectView>ShowAllFiles</ProjectView>
    <PublishUrlHistory />
    <InstallUrlHistory />
    <SupportUrlHistory />
    <UpdateUrlHistory />
    <BootstrapperUrlHistory />
    <ErrorReportUrlHistory />
    <FallbackCulture>zh-CN</FallbackCulture>
    <VerifyUploadedFiles>false</VerifyUploadedFiles>
  </PropertyGroup>
</Project>
version/STWCSMapEditor/WCS/WcsUpdate.cs
New file
@@ -0,0 +1,567 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using DevComponents.DotNetBar.Controls;
using System.Windows.Forms;
using System.Drawing;
using System.Data.SqlClient;
using com.force.json;
namespace WCS
{
    public class WcsUpdate
    {
        /// <summary>
        /// æ·»åŠ ListView界面显示
        /// </summary>
        /// <param name="le">listview</param>
        /// <param name="seq">需要</param>
        /// <param name="Errif">异常信息</param>
        /// <param name="arg_string">显示内容</param>
        public static void add_dw_log(ListViewEx le, string seq, string Errif, string arg_string)
        {
            try
            {
                ListViewItem lvi = new ListViewItem();
                lvi.SubItems[0].Text = "【" + DateTime.Now.ToString() + "】" + seq + arg_string;
                if (Errif == "N")
                {
                    lvi.ForeColor = Color.Black;
                }
                else if (Errif == "E")
                {
                    lvi.ForeColor = Color.Red;
                }
                else if (Errif == "P")
                {
                    lvi.ForeColor = Color.Blue;
                }
                le.Items.Add(lvi);
                le.EnsureVisible(le.Items.Count - 1);
            }
            catch (Exception em)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.SubItems[0].Text = "【" + DateTime.Now.ToString() + "】" + seq + arg_string + "异常:" + em.Message;
                le.Items.Add(lvi);
            }
        }
        /// <summary>
        /// è¯»å–wms命令档wms_command表,生成出库工作档
        /// </summary>
        /// <param name="le"></param>
        /// <param name="seq"></param>
        /// <returns></returns>
        public static void ProcOutToWorkData(ListViewEx le, string seq)
        {
            string s_wmsId = "", s_boxId = "", s_location = "", s_locno = "";
            string ls_error_memo = "", sql = "";
            int i_station = 0, i_wrkno = 0;
            DateTime ldt_date = System.DateTime.Now;
            add_dw_log(le, seq, "N", "--处理WMS命令档,生成出库工作档......");
            try
            {
                //sql = "select * from asr_wrk_masp where wrk_sts<5 or (wrk_sts>10 and wrk_sts<14)";
                //int count = Common.ExecAsrsSelect1(sql);
                //if (Common.GetWrkOutCount() > 0 || Common.GetWrkInCount() > 0)
                if (Common.plc_s_loading[0, 0] == "Y" || Common.plc_s_loading[0, 1] == "Y")
                {
                    add_dw_log(le, seq, "N", "--站点有物,无法生成出库工作档......");
                    return;
                }
                if (Common.GetWrkCount() > 0)
                {
                    add_dw_log(le, seq, "N", "--工作档中存在未完成资料,无法生成出库工作档......");
                    return;
                }
                sql = "select top 1 wmsId,boxId,station,loc_no from wms_command ";
                sql += " where messageName='StackerStoreOut' and status<>'Y' order by status";
                DataView dv = Common.ExecAsrsSelect(sql);
                if (dv.Count <= 0)
                {
                    return;
                }
                foreach (DataRowView drow in dv)
                {
                    s_wmsId = drow[0].ToString();
                    s_boxId = drow[1].ToString();
                    i_station = Int32.Parse(drow[2].ToString());
                    s_location = drow[3].ToString();
                }
                add_dw_log(le, "", "P", "   " + seq + ".1 æ­£åœ¨å¤„理周转箱单号:" + s_boxId);
                sql = "select loc_no from asr_stk_mast where boxId='" + s_boxId + "' and loc_sts='D'";
                dv = Common.ExecAsrsSelect(sql);
                if (dv.Count <= 0)
                {
                    ls_error_memo = "   " + seq + ".2 ç¼–号" + s_boxId + "的周转箱不存在或非在库状态,请检查";
                    add_dw_log(le, "", "E", ls_error_memo);
                    goto re;
                }
                foreach (DataRowView drow in dv)
                {
                    s_locno = drow[0].ToString();
                }
                if (s_location != s_locno && s_location != "")
                {
                    ls_error_memo = "   " + seq + ".3 WMS下发的周转箱编号(" + s_boxId + ")出库库位(" + s_location + ")与ASRS库存库位(" + s_locno + ")不符";
                    add_dw_log(le, "", "E", ls_error_memo);
                    goto re;
                }
                i_wrkno = Common.GetWrkno(2);
                sql = "insert into asr_wrk_masp(wrk_no,wrk_sts,io_type,crn_no,io_pri,source_loc_no,sta_no,source_sta_no,wmsId,boxId) ";
                sql += " values(" + i_wrkno + ",11,110,1,13.5,'" + s_locno + "',1,2,'" + s_wmsId + "','" + s_boxId + "'); ";
                sql += " update asr_stk_mast set loc_sts='R' where loc_no='" + s_locno + "'; ";
                sql += " update wms_command set status='Y' where wmsId='" + s_wmsId + "' and boxId='" + s_boxId + "';";
                SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                sqlcmd.Transaction = sqltrans;
                try
                {
                    sqlcmd.ExecuteNonQuery();
                    sqltrans.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    //sqlcommon.Close();
                    ls_error_memo = "   " + seq + ".4 æ’入工作主档[asr_wrk_masp]错误 !单号:" + s_boxId + " å¼‚常:" + t.Message;
                    add_dw_log(le, "", "E", ls_error_memo);
                    goto re;
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqlconn.Dispose();
                }
                return;
                re:
                sql = "update wms_command set status='X' where wmsId='" + s_wmsId + "' and boxId='" + s_boxId + "'";
                bool result = Common.ExecAsrsModify(sql);
                if (!result)
                {
                    ls_error_memo = "   " + seq + ".5 æ›´æ–°wms命令档失败!wmsId:" + s_wmsId + "boxId:" + s_boxId;
                    add_dw_log(le, "", "E", ls_error_memo);
                }
            }
            catch (Exception em)
            {
                ls_error_memo = "   " + seq + ".6 å¤„理待处理档生成出库工作档失败:" + em.Message;
                add_dw_log(le, "", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// å¤„理工作档中工作状态为4和14、6的资料,更新库存档、待处理档,并添加上报wms任务队列commandQueue
        /// </summary>
        public static void ProcWorkMast(ListViewEx le, string seq)
        {
            string ls_error_memo = "" ,sql = "";
            int li_wrk_no = 0, li_wrk_sts = 0, li_io_type = 0, li_sta_no = 0, li_source_sta_no = 0, li_wrk_model = 1;
            string ls_loc_no = "", ls_source_loc_no = "", ls_wmsId = "", ls_boxId = "";
            DateTime ldt_date = System.DateTime.Now;
            add_dw_log(le, seq, "N", "--处理工作档 (status=4,14)......");
            try
            {
                try
                {
                    DataView dv = Common.ExecAsrsSelect("select getdate() from sys_dual");
                    foreach (System.Data.DataRowView drow in dv)
                    {
                        ldt_date = Convert.ToDateTime(drow[0]);
                    }
                }
                catch (SqlException)
                {
                    return;
                }
                sql = "select wrk_no,wrk_sts,io_type,loc_no,sta_no,source_sta_no,source_loc_no,wmsId,boxId,wrk_model ";
                sql += " from asr_wrk_masp where (((wrk_sts = 4 Or wrk_sts = 14 ) and io_type <> 103 and io_type <> 104 and io_type <> 107 ) or (wrk_sts = 2 and io_type=6)) ";
                sql += " order by upd_mk,io_time,wrk_no";
                DataView dv_wrkmast = Common.ExecAsrsSelect(sql);
                if (dv_wrkmast==null || dv_wrkmast.Count < 1)
                {
                    add_dw_log(le, "", "N", "   " + seq + ".1 å·¥ä½œæ¡£ [asr_wrk_masp] æ²¡æœ‰èµ„æ–™!");
                    return;
                }
                foreach (DataRowView drow_wrkmast in dv_wrkmast)
                {
                    li_wrk_no = Convert.ToInt32(drow_wrkmast[0]);
                    li_wrk_sts = Convert.ToInt32(drow_wrkmast[1]);
                    li_io_type = Convert.ToInt32(drow_wrkmast[2]);
                    ls_loc_no = drow_wrkmast[3].ToString();
                    li_sta_no = Convert.ToInt32(drow_wrkmast[4]);
                    li_source_sta_no = Convert.ToInt32(drow_wrkmast[5]);
                    ls_source_loc_no = drow_wrkmast[6].ToString();
                    ls_wmsId = drow_wrkmast[7].ToString();
                    ls_boxId = drow_wrkmast[8].ToString();
                    li_wrk_model = Convert.ToInt32(drow_wrkmast[9].ToString());
                    add_dw_log(le, "", "P", "   " + seq + ".2 å¤„理工作档:" + li_wrk_no.ToString());
                    SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                    sqlconn.Open();
                    SqlTransaction sqltrans = sqlconn.BeginTransaction();
                    if (li_wrk_sts == 4)
                    {
                        switch (li_io_type)
                        {
                            case 10:
                                sql = "update asr_stk_mast set loc_sts='D',io_time='" + ldt_date + "',wmsId='" + ls_wmsId + "',boxId='" + ls_boxId + "'";
                                sql += " where loc_no='" + ls_loc_no + "' and (loc_sts = 'S' Or loc_sts = 'Q')";
                                SqlCommand cmd_10 = new SqlCommand(sql, sqlconn);
                                cmd_10.Transaction = sqltrans;
                                try
                                {
                                    cmd_10.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_10.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".2.1 å…¥åº“-更新库位状态异常 [asr_stk_mast] !工作号:" + li_wrk_no.ToString() + "  åº“位号:" + ls_loc_no + " å¼‚常:" + t.Message;
                                    add_dw_log(le, "", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                        }
                        sql = "update asr_wrk_masp set wrk_sts=5,modi_time='" + ldt_date + "' where wrk_no=" + li_wrk_no + "; ";
                        if (li_wrk_model == 1)
                        {
                            sql += " update wms_command set Io_status='Y',upd_mk='Y' where wmsId='" + ls_wmsId + "' and boxId='" + ls_boxId + "';";
                        }
                        SqlCommand cmd_wrk = new SqlCommand(sql, sqlconn);
                        cmd_wrk.Transaction = sqltrans;
                        try
                        {
                            cmd_wrk.ExecuteNonQuery();
                        }
                        catch (SqlException t)
                        {
                            sqltrans.Rollback();
                            cmd_wrk.Dispose();
                            sqlconn.Dispose();
                            ls_error_memo = "   " + seq + ".2.2 æ›´æ–°å·¥ä½œçŠ¶æ€å¼‚å¸¸ [asr_wrk_masp] !工作号:" + li_wrk_no.ToString() + " æ—¶é—´:" + ldt_date.ToString() + " å¼‚常:" + t.Message;
                            add_dw_log(le, "", "E", ls_error_memo);
                            goto re;
                        }
                        //向WMS上报状态
                        JSONObject json = new JSONObject();
                        json.put("messageName", "StackerTaskState");
                        json.put("boxId", ls_boxId);
                        json.put("wmsId", ls_wmsId);
                        json.put("type", "STACKER");
                        json.put("flashId", "1");
                        if (li_wrk_model == 1)
                        {
                            json.put("isInit", 1);
                        }
                        else
                        {
                            json.put("isInit", 0);
                        }
                        json.put("station", "2");
                        JSONObject obj_location = new JSONObject();
                        obj_location.put("s_level", 1);
                        obj_location.put("s_location", 10011);
                        int e_level = int.Parse(ls_loc_no.Substring(6,1));
                        obj_location.put("e_level", e_level);
                        int e_location = int.Parse("1" + ls_loc_no.Substring(2, 3) + ls_loc_no.Substring(1, 1));
                        obj_location.put("e_location", e_location);
                        obj_location.put("r_level", 0);
                        obj_location.put("r_location", 0);
                        json.put("state", 3);
                        json.put("location", obj_location);
                    }
                    else if (li_wrk_sts == 14)
                    {
                        switch (li_io_type)
                        {
                            case 110:
                                sql = "update asr_stk_mast set loc_sts='O',io_time='" + ldt_date + "',wmsId='',boxId=''";
                                sql += " where loc_no='" + ls_source_loc_no + "' and loc_sts = 'R'";
                                SqlCommand cmd_110 = new SqlCommand(sql, sqlconn);
                                cmd_110.Transaction = sqltrans;
                                try
                                {
                                    cmd_110.ExecuteNonQuery();
                                }
                                catch (SqlException t)
                                {
                                    sqltrans.Rollback();
                                    cmd_110.Dispose();
                                    sqlconn.Dispose();
                                    ls_error_memo = "   " + seq + ".2.3 å‡ºåº“-更新库位状态异常[asr_stk_mast] !库位号:" + ls_source_loc_no + " å¼‚常:" + t.Message;
                                    add_dw_log(le, "", "E", ls_error_memo);
                                    goto re;
                                }
                                break;
                        }
                        sql = "update asr_wrk_masp set wrk_sts=15,modi_time='" + ldt_date + "' where wrk_no=" + li_wrk_no + "; ";
                        if (li_wrk_model == 1)
                        {
                            sql += " update wms_command set Io_status='Y',upd_mk='Y' where wmsId='" + ls_wmsId + "' and boxId='" + ls_boxId + "';";
                        }
                        SqlCommand cmd_wrk1 = new SqlCommand(sql, sqlconn);
                        cmd_wrk1.Transaction = sqltrans;
                        try
                        {
                            cmd_wrk1.ExecuteNonQuery();
                        }
                        catch (SqlException t)
                        {
                            sqltrans.Rollback();
                            cmd_wrk1.Dispose();
                            sqltrans.Dispose();
                            ls_error_memo = "   " + seq + ".2.4 æ›´æ–°å·¥ä½œçŠ¶æ€å¼‚å¸¸ [asr_wrk_masp] !工作号:" + li_wrk_no.ToString() + " å¼‚常:" + t.Message;
                            add_dw_log(le, "", "E", ls_error_memo);
                            goto re;
                        }
                        JSONObject obj_location = new JSONObject();
                        int s_level = int.Parse(ls_source_loc_no.Substring(6, 1));
                        obj_location.put("s_level", s_level);
                        int s_location = int.Parse("1" + ls_source_loc_no.Substring(2, 3) + ls_source_loc_no.Substring(1, 1));
                        obj_location.put("s_location", s_location);
                        obj_location.put("e_level", 1);
                        obj_location.put("e_location", 10011);
                        obj_location.put("r_level", 0);
                        obj_location.put("r_location", 0);
                    }
                    sqltrans.Commit();
                    sqlconn.Dispose();
                }
            }
            catch (SqlException t)
            {
                ls_error_memo = "   " + seq + ".2.5 å¤„理工作档数据失败! å¼‚常:" + t.Message;
                add_dw_log(le, "", "E", ls_error_memo);
            }
            re:
            if (ls_error_memo != "")
            {
                try
                {
                    bool bl = Common.ExecAsrsModify("update dbo.asr_wrk_masp set upd_mk ='X',error_time='" + ldt_date + "',error_memo='" + ls_error_memo + "'  where wrk_no =" + li_wrk_no + "");
                }
                catch (SqlException t)
                {
                    ls_error_memo = "   " + seq + ".3.6 æ›´æ–°å·¥ä½œä¸»æ¡£çŠ¶æ€ [asr_wrk_masp] å¼‚常! å·¥ä½œå·:" + li_wrk_no.ToString() + " æ—¶é—´:" + ldt_date.ToString();
                    add_dw_log(le, "", "E", ls_error_memo);
                    return;
                }
            }
        }
        /// <summary>
        /// å¤„理工作档中工作状态为5和15的资料,转历史档
        /// </summary>
        public static void ProcWorkToLog(ListViewEx le, string seq)
        {
            string ls_error_memo = "";
            add_dw_log(le, seq, "N", "--处理工作档转历史档......");
            int wrkno = 0;
            try
            {
                string sql = "select top 1 wrk_no from asr_wrk_masp where (wrk_sts=5 or wrk_sts=15)";
                DataView dv = Common.ExecAsrsSelect(sql);
                if (dv.Count <= 0)
                {
                    add_dw_log(le, "", "N", "   " + seq + ".1 å·¥ä½œæ¡£ [asr_wrk_masp] æ²¡æœ‰èµ„料处理!");
                    return;
                }
                foreach (DataRowView drow in dv)
                {
                    wrkno = int.Parse(drow[0].ToString());
                }
                add_dw_log(le, "", "P", "   " + seq + ".1 æ­£åœ¨å¤„理转历史档" + wrkno);
                sql = "insert into asr_wrk_masp_log select * from asr_wrk_masp where wrk_no=" + wrkno + "; ";
                //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_devp) ";
                //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_crnp);";
                sql += " delete from asr_wrk_masp where wrk_no=" + wrkno + "; ";
                //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_devp) ";
                //sql += " and wrk_no not in (select wrk_no from dbo.asr_bas_crnp);";
                SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                sqlcmd.Transaction = sqltrans;
                try
                {
                    int result = sqlcmd.ExecuteNonQuery();
                    sqltrans.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    //sqlcommon.Close();
                    ls_error_memo = "   " + seq + ".1 å·¥ä½œæ¡£[asr_wrk_masp]转历史档错误 ! å¼‚常:" + t.Message;
                    add_dw_log(le, "", "E", ls_error_memo);
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqlconn.Dispose();
                }
                return;
            }
            catch (Exception t)
            {
                ls_error_memo = "   " + seq + ".2 å¤„理工作档转历史档失败! å¼‚常:" + t.Message;
                add_dw_log(le, "", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// å¤„理wms命令档中已完结资料,转历史档
        /// </summary>
        public static void ProcWmsCommandToLog(ListViewEx le, string seq)
        {
            string ls_error_memo = "";
            add_dw_log(le, seq, "N", "--处理WMS命令档转历史档......");
            try
            {
                string sql = "insert into wms_command_log select * from wms_command where Io_status='Y' and upd_mk='Y';";
                sql += " delete from wms_command where Io_status='Y' and upd_mk='Y';";
                SqlConnection sqlconn = new SqlConnection(Common.sqlcon);
                sqlconn.Open();
                SqlTransaction sqltrans = sqlconn.BeginTransaction();
                SqlCommand sqlcmd = new SqlCommand(sql, sqlconn);
                sqlcmd.Transaction = sqltrans;
                try
                {
                    sqlcmd.ExecuteNonQuery();
                    sqltrans.Commit();
                }
                catch (SqlException t)
                {
                    sqltrans.Rollback();
                    //sqlcommon.Close();
                    ls_error_memo = "   " + seq + ".1 WMS命令档转历史档错误 ! å¼‚常:" + t.Message;
                    add_dw_log(le, "", "E", ls_error_memo);
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqlconn.Dispose();
                }
                return;
            }
            catch (Exception t)
            {
                ls_error_memo = "   " + seq + ".2 WMS命令档转历史档失败! å¼‚常:" + t.Message;
                add_dw_log(le, "", "E", ls_error_memo);
            }
        }
        /// <summary>
        /// åŒæ­¥è´§ä½ä¿¡æ¯åˆ°WMS
        /// </summary>
        public static void ProcReportLocationsResult(ListViewEx le, string seq)
        {
            string ls_error_memo = "", sql = "";
            string ls_messageName = "", ls_areaIdx = "";
            int li_requestlength = 0, li_totallength = 0, li_currentlength = 0, li_resultlength = 0;
            string ls_loc_no = "", ls_loc_sts = "", ls_boxId = "";
            int li_row1 = 0, li_bay1 = 0, li_lev1 = 0;
            add_dw_log(le, seq, "N", "--处理WMS货位信息同步命令......");
            try
            {
                sql = "select messageName,requestlength,areaIdx,totallength,currentlength ";
                sql += " from wms_command where messageName='InquiryLocations' and Io_status<>'Y' and currentlength<totallength ";
                DataView dv = Common.ExecAsrsSelect(sql);
                if (dv.Count < 1)
                {
                    add_dw_log(le, "", "N", "   " + seq + ".1 å‘½ä»¤æ¡£ [wms_command] æ²¡æœ‰è´§ä½åŒæ­¥ä¿¡æ¯èµ„æ–™!");
                    return;
                }
                foreach (DataRowView drow in dv)
                {
                    ls_messageName = drow[0].ToString();
                    li_requestlength = Convert.ToInt32(drow[1]);
                    ls_areaIdx = drow[2].ToString();
                    li_totallength = Convert.ToInt32(drow[3]);
                    li_currentlength = Convert.ToInt32(drow[4]);
                }
                JSONArray array = new JSONArray();
                sql = " select top " + li_requestlength + " loc_no,loc_sts,row1,bay1,lev1,boxId from asr_stk_mast ";
                sql += " where loc_no not in (select top " + li_currentlength + " loc_no from asr_stk_mast order by lev1,bay1,row1) ";
                sql += " order by lev1,bay1,row1";
                DataView dv_stk = Common.ExecAsrsSelect(sql);
                li_resultlength = dv_stk.Count;
                if (li_resultlength <= 0)
                {
                    return;
                }
                add_dw_log(le, "", "P", "   " + seq + ".2 æ­£åœ¨å¤„理货位信息同步,共" + li_resultlength + "笔数据");
                foreach (DataRowView drow in dv_stk)
                {
                    ls_loc_no = drow[0].ToString();
                    ls_loc_sts = drow[1].ToString();
                    li_row1 = Convert.ToInt32(drow[2]);
                    li_bay1 = Convert.ToInt32(drow[3]);
                    li_lev1 = Convert.ToInt32(drow[4]);
                    ls_boxId = drow[5].ToString();
                    JSONObject jsonres = new JSONObject();
                    jsonres.put("level", li_lev1);
                    string location = "1" + li_bay1.ToString().PadLeft(3, '0') + li_row1;
                    jsonres.put("location", long.Parse(location));
                    int li_state = -1;
                    switch (ls_loc_sts)
                    {
                        case "O":
                            li_state = 0;
                            break;
                        case "R":
                            li_state = 1;
                            break;
                        case "S":
                            li_state = 1;
                            break;
                        case "D":
                            li_state = 10;
                            break;
                        case "X":
                            li_state = -1;
                            break;
                    }
                    jsonres.put("state", li_state);
                    jsonres.put("boxId", ls_boxId);
                    array.put(jsonres);
                }
                sql = "update wms_command set currentlength=currentlength+" + li_resultlength + ", ";
                sql += " Io_status = case when (currentlength+" + li_resultlength + ">=totallength) then 'Y' else 'N' end ";
                sql += " ,upd_mk = case when (currentlength+" + li_resultlength + ">=totallength) then 'Y' else 'N' end ";
                sql += " where messageName='InquiryLocations' and Io_status<>'Y' and currentlength<totallength ";
                bool bl = Common.ExecAsrsModify(sql);
                if (!bl)
                {
                    ls_error_memo = "   " + seq + ".3 WMS处理货位信息同步失败! ";
                    add_dw_log(le, "", "E", ls_error_memo);
                }
            }
            catch (Exception t)
            {
                ls_error_memo = "   " + seq + ".4 WMS处理货位信息同步失败! å¼‚常:" + t.Message;
                add_dw_log(le, "", "E", ls_error_memo);
            }
        }
    }
}
version/STWCSMapEditor/WCS/app.config
New file
@@ -0,0 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
version/STWCSMapEditor/WCS/bin/Debug/BX_IV.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/CSkin.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/DevComponents.DotNetBar.SuperGrid.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/DevComponents.DotNetBar2.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/HslCommunication.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/ListenPlayDll2014.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/ListenTechMT.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/Microscan.SDK-1.0.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/Oracle.ManagedDataAccess.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/Sharp7Library.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/System Tools XP.ico
version/STWCSMapEditor/WCS/bin/Debug/System.ini
New file
@@ -0,0 +1,35 @@
[System]
//服务器IP
//sysIp=172.17.20.240
sysIp=192.168.4.15
//多个堆垛机IP之间;分割
crn_ip=10.10.10.10;10.10.10.18;10.10.10.19
//多个PLC IP之间;分割
plc_ip=10.10.10.100
//多个条码阅读器之间;分割
barcode_ip=10.10.10.102;10.10.10.104
//多个led之间;分割
led_ip=10.10.10.101;10.10.10.102;10.10.10.103;10.10.10.104;10.10.10.105
//多个磅秤之间;分割
//scale_ip=1;2;3;4
Ver=
companyName=浙江中扬立库技术有限公司
scanTimeout=4
//WMS的网址
//HttpUrl=http://10.10.10.211:8081/jzwms/rpc/pakin/loc/v1
HttpUrl=http://172.17.20.240:8080//klswms/rpc/pakin/loc/v1
//WCS  ip+端口
wcsip=127.0.0.1
wcsport=1200
version/STWCSMapEditor/WCS/bin/Debug/WCS.exe
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/WCS.exe.config
New file
@@ -0,0 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
version/STWCSMapEditor/WCS/bin/Debug/WCS.pdb
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/WCS.vshost.exe
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/WCS.vshost.exe.config
New file
@@ -0,0 +1,3 @@
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration>
version/STWCSMapEditor/WCS/bin/Debug/WCS.vshost.exe.manifest
New file
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>
version/STWCSMapEditor/WCS/bin/Debug/com.force.json.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/data/led1_area1.txt
New file
@@ -0,0 +1 @@
11
version/STWCSMapEditor/WCS/bin/Debug/data/led1_area2.txt
New file
@@ -0,0 +1 @@
22
version/STWCSMapEditor/WCS/bin/Debug/data/led2_area1.txt
New file
@@ -0,0 +1 @@
自动化立体仓储系统
version/STWCSMapEditor/WCS/bin/Debug/data/led2_area2.txt
New file
@@ -0,0 +1 @@
自动化立体仓储系统
version/STWCSMapEditor/WCS/bin/Debug/data/led3_area1.txt
New file
@@ -0,0 +1 @@
中扬储存
version/STWCSMapEditor/WCS/bin/Debug/data/led3_area2.txt
New file
@@ -0,0 +1 @@
中扬物流
version/STWCSMapEditor/WCS/bin/Debug/data/led4_area1.txt
New file
@@ -0,0 +1 @@
自动化立体仓储系统
version/STWCSMapEditor/WCS/bin/Debug/data/led4_area2.txt
New file
@@ -0,0 +1 @@
自动化立体仓储系统
version/STWCSMapEditor/WCS/bin/Debug/image/CRN.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_auto.png
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_error.png
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_hptoohp.png
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_loctoloc.png
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_manual.png
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_retrieve.png
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_stntostn.png
version/STWCSMapEditor/WCS/bin/Debug/image/Crane_store.png
version/STWCSMapEditor/WCS/bin/Debug/image/ERROR.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/Graph2D.jpg
version/STWCSMapEditor/WCS/bin/Debug/image/Graph3D.jpg
version/STWCSMapEditor/WCS/bin/Debug/image/GraphOther.jpg
version/STWCSMapEditor/WCS/bin/Debug/image/JavaCup.ico
version/STWCSMapEditor/WCS/bin/Debug/image/MAP.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/PLC.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/System Tools XP.ico
version/STWCSMapEditor/WCS/bin/Debug/image/Warcraft [F].ico
version/STWCSMapEditor/WCS/bin/Debug/image/add.png
version/STWCSMapEditor/WCS/bin/Debug/image/back.png
version/STWCSMapEditor/WCS/bin/Debug/image/barcode.jpg
version/STWCSMapEditor/WCS/bin/Debug/image/bscanner.png
version/STWCSMapEditor/WCS/bin/Debug/image/cacl.GIF
version/STWCSMapEditor/WCS/bin/Debug/image/cancel.png
version/STWCSMapEditor/WCS/bin/Debug/image/chache11.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/chache33.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/close.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/close.png
version/STWCSMapEditor/WCS/bin/Debug/image/cloud.png
version/STWCSMapEditor/WCS/bin/Debug/image/collapse.png
version/STWCSMapEditor/WCS/bin/Debug/image/computer.png
version/STWCSMapEditor/WCS/bin/Debug/image/computer1.png
version/STWCSMapEditor/WCS/bin/Debug/image/computer2.png
version/STWCSMapEditor/WCS/bin/Debug/image/computer3.png
version/STWCSMapEditor/WCS/bin/Debug/image/confer.png
version/STWCSMapEditor/WCS/bin/Debug/image/control.png
version/STWCSMapEditor/WCS/bin/Debug/image/copy.png
version/STWCSMapEditor/WCS/bin/Debug/image/crnmap.png
version/STWCSMapEditor/WCS/bin/Debug/image/delete.png
version/STWCSMapEditor/WCS/bin/Debug/image/edit.png
version/STWCSMapEditor/WCS/bin/Debug/image/enlarge.png
version/STWCSMapEditor/WCS/bin/Debug/image/err.png
version/STWCSMapEditor/WCS/bin/Debug/image/excel.png
version/STWCSMapEditor/WCS/bin/Debug/image/exit.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/exit.png
version/STWCSMapEditor/WCS/bin/Debug/image/expand.png
version/STWCSMapEditor/WCS/bin/Debug/image/first.png
version/STWCSMapEditor/WCS/bin/Debug/image/flash.wav
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/image/fork_l.png
version/STWCSMapEditor/WCS/bin/Debug/image/fork_r.png
version/STWCSMapEditor/WCS/bin/Debug/image/grant.png
version/STWCSMapEditor/WCS/bin/Debug/image/grgallry.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/h_line.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/help.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/image.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/info.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/last.png
version/STWCSMapEditor/WCS/bin/Debug/image/loading.gif
version/STWCSMapEditor/WCS/bin/Debug/image/lock.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/login1.jpg
version/STWCSMapEditor/WCS/bin/Debug/image/main.png
version/STWCSMapEditor/WCS/bin/Debug/image/man.png
version/STWCSMapEditor/WCS/bin/Debug/image/modify.png
version/STWCSMapEditor/WCS/bin/Debug/image/msg.wav
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/image/newh.gif
version/STWCSMapEditor/WCS/bin/Debug/image/next.png
version/STWCSMapEditor/WCS/bin/Debug/image/notebook.GIF
version/STWCSMapEditor/WCS/bin/Debug/image/open.png
version/STWCSMapEditor/WCS/bin/Debug/image/paste.png
version/STWCSMapEditor/WCS/bin/Debug/image/people.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/pic_choose.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/prev.png
version/STWCSMapEditor/WCS/bin/Debug/image/print.png
version/STWCSMapEditor/WCS/bin/Debug/image/printer.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/question.png
version/STWCSMapEditor/WCS/bin/Debug/image/reduce.png
version/STWCSMapEditor/WCS/bin/Debug/image/retrieve.png
version/STWCSMapEditor/WCS/bin/Debug/image/right.png
version/STWCSMapEditor/WCS/bin/Debug/image/s_line.bmp
version/STWCSMapEditor/WCS/bin/Debug/image/save.png
version/STWCSMapEditor/WCS/bin/Debug/image/scanner.png
version/STWCSMapEditor/WCS/bin/Debug/image/search.png
version/STWCSMapEditor/WCS/bin/Debug/image/set.png
version/STWCSMapEditor/WCS/bin/Debug/image/setting.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/sta1.png
version/STWCSMapEditor/WCS/bin/Debug/image/sta_b.png
version/STWCSMapEditor/WCS/bin/Debug/image/sta_conv.png
version/STWCSMapEditor/WCS/bin/Debug/image/sta_l.png
version/STWCSMapEditor/WCS/bin/Debug/image/sta_lr.png
version/STWCSMapEditor/WCS/bin/Debug/image/sta_r.png
version/STWCSMapEditor/WCS/bin/Debug/image/sta_sj.png
version/STWCSMapEditor/WCS/bin/Debug/image/sta_sj0.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/sta_sj1.png
version/STWCSMapEditor/WCS/bin/Debug/image/sta_t.png
version/STWCSMapEditor/WCS/bin/Debug/image/sta_tb.png
version/STWCSMapEditor/WCS/bin/Debug/image/stack.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/start48.png
version/STWCSMapEditor/WCS/bin/Debug/image/start48_1.png
version/STWCSMapEditor/WCS/bin/Debug/image/stop48.png
version/STWCSMapEditor/WCS/bin/Debug/image/stop48_1.png
version/STWCSMapEditor/WCS/bin/Debug/image/timer.png
version/STWCSMapEditor/WCS/bin/Debug/image/top.png
version/STWCSMapEditor/WCS/bin/Debug/image/top.swf
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/image/uninstall.ico
version/STWCSMapEditor/WCS/bin/Debug/image/use.png
version/STWCSMapEditor/WCS/bin/Debug/image/user.png
version/STWCSMapEditor/WCS/bin/Debug/image/user1.png
version/STWCSMapEditor/WCS/bin/Debug/image/warn.png
version/STWCSMapEditor/WCS/bin/Debug/image/woman.png
version/STWCSMapEditor/WCS/bin/Debug/image/word.png
version/STWCSMapEditor/WCS/bin/Debug/image/wrkgrm.png
version/STWCSMapEditor/WCS/bin/Debug/image/È«ÆÁ.png
version/STWCSMapEditor/WCS/bin/Debug/image/È¡ÏûÈ«ÆÁ.png
version/STWCSMapEditor/WCS/bin/Debug/image/¸´¼þ sta_sj0.PNG
version/STWCSMapEditor/WCS/bin/Debug/image/¸´¼þ stack.PNG
version/STWCSMapEditor/WCS/bin/Debug/json/CDWCS.json
New file
@@ -0,0 +1 @@
{"mapName":"CDWCS","rackCount":4,"crnCount":1,"stbCount":20,"hpPosition":0,"minBayNo":1,"floors":4,"racks":[{"type":"rack","id":"rack3","top":281,"left":463,"width":846,"height":24,"minBayNo":1,"maxBayNo":38},{"type":"rack","id":"rack4","top":313,"left":463,"width":846,"height":24,"minBayNo":1,"maxBayNo":38},{"type":"rack","id":"rack1","top":168,"left":463,"width":846,"height":24,"minBayNo":1,"maxBayNo":38},{"type":"rack","id":"rack2","top":201,"left":463,"width":846,"height":24,"minBayNo":1,"maxBayNo":38}],"rackDescs":[{"type":"rackDescs","id":"lb_desc2","text":"#4","top":343,"left":1246,"width":33,"height":23},{"type":"rackDescs","id":"lb_desc1","text":"#1","top":142,"left":1249,"width":30,"height":23}],"crns":[{"type":"crane","id":"crn-2","text":"2","top":242,"left":606,"width":93,"height":22},{"type":"track","id":"lb_track2","text":"","top":252,"left":386,"width":1004,"height":2}],"areas":[{"type":"Control_floor","id":"tabControl_floor1","text":"楼层","top":89,"left":99,"width":1628,"height":610,"floors":[{"type":"floor","id":"page_floor1","text":"1F","top":4,"left":22,"width":1602,"height":602,"stns":[{"type":"stn","id":"site-105","text":"105","top":375,"left":711,"width":60,"height":24},{"type":"stn","id":"site-103","text":"103","top":342,"left":606,"width":60,"height":24},{"type":"stn","id":"site-101","text":"101","top":405,"left":606,"width":60,"height":24},{"type":"stn","id":"site-102","text":"102","top":375,"left":606,"width":60,"height":24},{"type":"stn","id":"site-104","text":"104","top":343,"left":711,"width":60,"height":24}]},{"type":"floor","id":"page_floor2","text":"2F","top":4,"left":22,"width":1602,"height":602,"stns":[{"type":"stn","id":"site-202","text":"202","top":372,"left":663,"width":60,"height":24},{"type":"stn","id":"site-201","text":"201","top":402,"left":663,"width":60,"height":24},{"type":"stn","id":"site-203","text":"203","top":342,"left":663,"width":60,"height":24},{"type":"stn","id":"site-204","text":"204","top":342,"left":796,"width":60,"height":24},{"type":"stn","id":"site-205","text":"205","top":372,"left":796,"width":60,"height":24}]},{"type":"floor","id":"page_floor3","text":"3F","top":4,"left":22,"width":1602,"height":602,"stns":[{"type":"stn","id":"site-302","text":"302","top":372,"left":663,"width":60,"height":24},{"type":"stn","id":"site-301","text":"301","top":402,"left":663,"width":60,"height":24},{"type":"stn","id":"site-303","text":"303","top":342,"left":663,"width":60,"height":24},{"type":"stn","id":"site-304","text":"304","top":342,"left":796,"width":60,"height":24},{"type":"stn","id":"site-305","text":"305","top":372,"left":796,"width":60,"height":24}]},{"type":"floor","id":"page_floor4","text":"4F","top":4,"left":22,"width":1602,"height":602,"stns":[{"type":"stn","id":"site-402","text":"402","top":375,"left":568,"width":60,"height":24},{"type":"stn","id":"site-401","text":"401","top":405,"left":568,"width":60,"height":24},{"type":"stn","id":"site-403","text":"403","top":345,"left":568,"width":60,"height":24},{"type":"stn","id":"site-404","text":"404","top":345,"left":701,"width":60,"height":24},{"type":"stn","id":"site-405","text":"405","top":375,"left":701,"width":60,"height":24}]}]}]}
version/STWCSMapEditor/WCS/bin/Debug/json/STWCS.json
New file
@@ -0,0 +1 @@
{"mapName":"STWCS","rackCount":16,"crnCount":4,"stbCount":16,"hpPosition":0,"minBayNo":2,"floors":1,"racks":[{"type":"rack","id":"rack4","top":549,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack1","top":642,"left":413,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack2","top":619,"left":413,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack3","top":571,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack8","top":435,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack5","top":527,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack6","top":505,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack7","top":457,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack12","top":322,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack9","top":413,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack10","top":391,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack11","top":344,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack16","top":206,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack13","top":300,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack15","top":228,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31},{"type":"rack","id":"rack14","top":278,"left":412,"width":846,"height":20,"minBayNo":2,"maxBayNo":31}],"rackDescs":[{"type":"rackDescs","id":"lb_desc16","text":"#1","top":664,"left":1228,"width":30,"height":23},{"type":"rackDescs","id":"lb_desc1","text":"#16","top":181,"left":1217,"width":41,"height":23}],"crns":[{"type":"crane","id":"crn-4","text":"4","top":252,"left":501,"width":93,"height":22},{"type":"track","id":"lb_track1","text":"","top":605,"left":332,"width":971,"height":2},{"type":"crane","id":"crn-3","text":"3","top":367,"left":512,"width":93,"height":22},{"type":"track","id":"lb_track2","text":"","top":489,"left":332,"width":972,"height":2},{"type":"crane","id":"crn-2","text":"2","top":481,"left":501,"width":93,"height":22},{"type":"track","id":"lb_track5","text":"","top":376,"left":333,"width":974,"height":2},{"type":"track","id":"lb_track4","text":"","top":260,"left":335,"width":975,"height":2},{"type":"crane","id":"crn-1","text":"1","top":595,"left":501,"width":93,"height":22}],"areas":[{"type":"Control_floor","id":"tabControl_floor1","text":"楼层","top":68,"left":80,"width":1275,"height":910,"floors":[{"type":"floor","id":"page_floor1","text":"1F","top":4,"left":22,"width":1249,"height":902,"stns":[{"type":"track","id":"lb_trCart21","text":"","top":93,"left":243,"width":6,"height":569},{"type":"track","id":"lb_trCart22","text":"","top":93,"left":297,"width":6,"height":569},{"type":"stn","id":"site-016","text":"016","top":457,"left":239,"width":69,"height":20},{"type":"stn","id":"site-015","text":"015","top":93,"left":310,"width":100,"height":20},{"type":"stn","id":"site-014","text":"014","top":93,"left":413,"width":92,"height":20},{"type":"stn","id":"site-013","text":"013","top":115,"left":413,"width":92,"height":20},{"type":"stn","id":"site-012","text":"012","top":138,"left":413,"width":92,"height":20},{"type":"stn","id":"site-011","text":"011","top":160,"left":413,"width":92,"height":20},{"type":"stn","id":"site-010","text":"010","top":183,"left":413,"width":92,"height":20},{"type":"stn","id":"site-009","text":"009","top":183,"left":310,"width":100,"height":20},{"type":"stn","id":"site-008","text":"008","top":228,"left":310,"width":100,"height":20},{"type":"stn","id":"site-007","text":"007","top":278,"left":311,"width":100,"height":20},{"type":"stn","id":"site-006","text":"006","top":344,"left":311,"width":100,"height":20},{"type":"stn","id":"site-005","text":"005","top":391,"left":311,"width":100,"height":20},{"type":"stn","id":"site-004","text":"004","top":457,"left":311,"width":100,"height":20},{"type":"stn","id":"site-003","text":"003","top":505,"left":311,"width":100,"height":20},{"type":"stn","id":"site-002","text":"002","top":571,"left":311,"width":100,"height":20},{"type":"stn","id":"site-001","text":"001","top":619,"left":311,"width":100,"height":20}]}]}]}
version/STWCSMapEditor/WCS/bin/Debug/listen.dat
version/STWCSMapEditor/WCS/bin/Debug/message.ini
New file
@@ -0,0 +1,21 @@
[CTRL]
TOTAL=1
[CTRL_1]
VERSION=T2N(2014)V3.2
PNO=3
BAUDRATE=115200
IP=166.2.10.220
GATEWAY=0.0.0.0
SUBNETMASK=255.255.0.0
MACADDRESS=94:98:a2:0:8c:10
WIDTH=256
HEIGHT=160
DBCOLOR=1
oe=0
da=1
MIRROR=0
SCANSTYLE=0
LINEORDER=0
CLK=0
RGMIRROR=0
zhanKong=0
version/STWCSMapEditor/WCS/bin/Debug/microsoft.visualbasic.powerpacks.vs.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/onbon.api.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Debug/timerlabel.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Release/@public.dll
Binary files differ
version/STWCSMapEditor/WCS/bin/Release/@public.pdb
Binary files differ
version/STWCSMapEditor/WCS/bin/Release/WCS.exe
Binary files differ
version/STWCSMapEditor/WCS/bin/Release/WCS.pdb
Binary files differ
version/STWCSMapEditor/WCS/crndisplay.Designer.cs
New file
@@ -0,0 +1,420 @@
namespace WCS
{
    partial class crndisplay
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(crndisplay));
            this.labelX1 = new DevComponents.DotNetBar.LabelX();
            this.crnno = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.labelX2 = new DevComponents.DotNetBar.LabelX();
            this.labelX3 = new DevComponents.DotNetBar.LabelX();
            this.labelX4 = new DevComponents.DotNetBar.LabelX();
            this.labelX5 = new DevComponents.DotNetBar.LabelX();
            this.labelX6 = new DevComponents.DotNetBar.LabelX();
            this.labelX7 = new DevComponents.DotNetBar.LabelX();
            this.labelX8 = new DevComponents.DotNetBar.LabelX();
            this.labelX9 = new DevComponents.DotNetBar.LabelX();
            this.labelX10 = new DevComponents.DotNetBar.LabelX();
            this.crnid = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.dstn = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.wrksts = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.errinfo = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.dloc = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.iotype = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.crnsts = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.sloc = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.sstn = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.SuspendLayout();
            //
            // labelX1
            //
            //
            //
            //
            this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX1.Location = new System.Drawing.Point(3, 2);
            this.labelX1.Margin = new System.Windows.Forms.Padding(4);
            this.labelX1.Name = "labelX1";
            this.labelX1.Size = new System.Drawing.Size(84, 29);
            this.labelX1.TabIndex = 2;
            this.labelX1.Text = "堆垛机号";
            //
            // crnno
            //
            this.crnno.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.crnno.Border.Class = "TextBoxBorder";
            this.crnno.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.crnno.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.crnno.ForeColor = System.Drawing.Color.Black;
            this.crnno.Location = new System.Drawing.Point(92, 2);
            this.crnno.Margin = new System.Windows.Forms.Padding(4);
            this.crnno.Name = "crnno";
            this.crnno.Size = new System.Drawing.Size(48, 25);
            this.crnno.TabIndex = 3;
            //
            // labelX2
            //
            //
            //
            //
            this.labelX2.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX2.Location = new System.Drawing.Point(145, 2);
            this.labelX2.Margin = new System.Windows.Forms.Padding(4);
            this.labelX2.Name = "labelX2";
            this.labelX2.Size = new System.Drawing.Size(56, 29);
            this.labelX2.TabIndex = 4;
            this.labelX2.Text = "工作号";
            //
            // labelX3
            //
            //
            //
            //
            this.labelX3.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX3.Location = new System.Drawing.Point(271, 2);
            this.labelX3.Margin = new System.Windows.Forms.Padding(4);
            this.labelX3.Name = "labelX3";
            this.labelX3.Size = new System.Drawing.Size(41, 29);
            this.labelX3.TabIndex = 5;
            this.labelX3.Text = "源站";
            //
            // labelX4
            //
            //
            //
            //
            this.labelX4.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX4.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX4.Location = new System.Drawing.Point(367, 2);
            this.labelX4.Margin = new System.Windows.Forms.Padding(4);
            this.labelX4.Name = "labelX4";
            this.labelX4.Size = new System.Drawing.Size(56, 29);
            this.labelX4.TabIndex = 6;
            this.labelX4.Text = "目标站";
            //
            // labelX5
            //
            //
            //
            //
            this.labelX5.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX5.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX5.Location = new System.Drawing.Point(3, 71);
            this.labelX5.Margin = new System.Windows.Forms.Padding(4);
            this.labelX5.Name = "labelX5";
            this.labelX5.Size = new System.Drawing.Size(84, 29);
            this.labelX5.TabIndex = 7;
            this.labelX5.Text = "源库位";
            //
            // labelX6
            //
            //
            //
            //
            this.labelX6.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX6.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX6.Location = new System.Drawing.Point(237, 40);
            this.labelX6.Margin = new System.Windows.Forms.Padding(4);
            this.labelX6.Name = "labelX6";
            this.labelX6.Size = new System.Drawing.Size(72, 29);
            this.labelX6.TabIndex = 12;
            this.labelX6.Text = "出入类型";
            //
            // labelX7
            //
            //
            //
            //
            this.labelX7.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX7.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX7.Location = new System.Drawing.Point(3, 36);
            this.labelX7.Margin = new System.Windows.Forms.Padding(4);
            this.labelX7.Name = "labelX7";
            this.labelX7.Size = new System.Drawing.Size(84, 29);
            this.labelX7.TabIndex = 11;
            this.labelX7.Text = "工作状态";
            //
            // labelX8
            //
            //
            //
            //
            this.labelX8.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX8.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX8.Location = new System.Drawing.Point(3, 141);
            this.labelX8.Margin = new System.Windows.Forms.Padding(4);
            this.labelX8.Name = "labelX8";
            this.labelX8.Size = new System.Drawing.Size(84, 29);
            this.labelX8.TabIndex = 10;
            this.labelX8.Text = "异常";
            //
            // labelX9
            //
            //
            //
            //
            this.labelX9.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX9.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX9.Location = new System.Drawing.Point(3, 106);
            this.labelX9.Margin = new System.Windows.Forms.Padding(4);
            this.labelX9.Name = "labelX9";
            this.labelX9.Size = new System.Drawing.Size(89, 29);
            this.labelX9.TabIndex = 9;
            this.labelX9.Text = "堆垛机状态";
            //
            // labelX10
            //
            //
            //
            //
            this.labelX10.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX10.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX10.Location = new System.Drawing.Point(216, 71);
            this.labelX10.Margin = new System.Windows.Forms.Padding(4);
            this.labelX10.Name = "labelX10";
            this.labelX10.Size = new System.Drawing.Size(73, 29);
            this.labelX10.TabIndex = 8;
            this.labelX10.Text = "目标库位";
            //
            // crnid
            //
            this.crnid.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.crnid.Border.Class = "TextBoxBorder";
            this.crnid.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.crnid.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.crnid.ForeColor = System.Drawing.Color.Black;
            this.crnid.Location = new System.Drawing.Point(196, 2);
            this.crnid.Margin = new System.Windows.Forms.Padding(4);
            this.crnid.Name = "crnid";
            this.crnid.Size = new System.Drawing.Size(67, 25);
            this.crnid.TabIndex = 13;
            this.crnid.Text = "9999";
            //
            // dstn
            //
            this.dstn.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.dstn.Border.Class = "TextBoxBorder";
            this.dstn.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.dstn.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.dstn.ForeColor = System.Drawing.Color.Black;
            this.dstn.Location = new System.Drawing.Point(419, 2);
            this.dstn.Margin = new System.Windows.Forms.Padding(4);
            this.dstn.Name = "dstn";
            this.dstn.Size = new System.Drawing.Size(79, 25);
            this.dstn.TabIndex = 14;
            //
            // wrksts
            //
            this.wrksts.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.wrksts.Border.Class = "TextBoxBorder";
            this.wrksts.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.wrksts.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.wrksts.ForeColor = System.Drawing.Color.Black;
            this.wrksts.Location = new System.Drawing.Point(92, 36);
            this.wrksts.Margin = new System.Windows.Forms.Padding(4);
            this.wrksts.Name = "wrksts";
            this.wrksts.Size = new System.Drawing.Size(136, 25);
            this.wrksts.TabIndex = 17;
            //
            // errinfo
            //
            this.errinfo.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.errinfo.Border.Class = "TextBoxBorder";
            this.errinfo.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.errinfo.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.errinfo.ForeColor = System.Drawing.Color.Black;
            this.errinfo.Location = new System.Drawing.Point(92, 141);
            this.errinfo.Margin = new System.Windows.Forms.Padding(4);
            this.errinfo.Name = "errinfo";
            this.errinfo.Size = new System.Drawing.Size(398, 25);
            this.errinfo.TabIndex = 16;
            //
            // dloc
            //
            this.dloc.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.dloc.Border.Class = "TextBoxBorder";
            this.dloc.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.dloc.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.dloc.ForeColor = System.Drawing.Color.Black;
            this.dloc.Location = new System.Drawing.Point(287, 71);
            this.dloc.Margin = new System.Windows.Forms.Padding(4);
            this.dloc.Name = "dloc";
            this.dloc.Size = new System.Drawing.Size(165, 25);
            this.dloc.TabIndex = 15;
            //
            // iotype
            //
            this.iotype.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.iotype.Border.Class = "TextBoxBorder";
            this.iotype.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.iotype.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.iotype.ForeColor = System.Drawing.Color.Black;
            this.iotype.Location = new System.Drawing.Point(305, 40);
            this.iotype.Margin = new System.Windows.Forms.Padding(4);
            this.iotype.Name = "iotype";
            this.iotype.Size = new System.Drawing.Size(192, 25);
            this.iotype.TabIndex = 20;
            //
            // crnsts
            //
            this.crnsts.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.crnsts.Border.Class = "TextBoxBorder";
            this.crnsts.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.crnsts.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.crnsts.ForeColor = System.Drawing.Color.Black;
            this.crnsts.Location = new System.Drawing.Point(92, 106);
            this.crnsts.Margin = new System.Windows.Forms.Padding(4);
            this.crnsts.Name = "crnsts";
            this.crnsts.Size = new System.Drawing.Size(398, 25);
            this.crnsts.TabIndex = 19;
            //
            // sloc
            //
            this.sloc.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.sloc.Border.Class = "TextBoxBorder";
            this.sloc.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.sloc.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.sloc.ForeColor = System.Drawing.Color.Black;
            this.sloc.Location = new System.Drawing.Point(92, 71);
            this.sloc.Margin = new System.Windows.Forms.Padding(4);
            this.sloc.Name = "sloc";
            this.sloc.Size = new System.Drawing.Size(120, 25);
            this.sloc.TabIndex = 18;
            //
            // sstn
            //
            this.sstn.BackColor = System.Drawing.Color.LightCyan;
            //
            //
            //
            this.sstn.Border.Class = "TextBoxBorder";
            this.sstn.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.sstn.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.sstn.ForeColor = System.Drawing.Color.Black;
            this.sstn.Location = new System.Drawing.Point(307, 2);
            this.sstn.Margin = new System.Windows.Forms.Padding(4);
            this.sstn.Name = "sstn";
            this.sstn.Size = new System.Drawing.Size(60, 25);
            this.sstn.TabIndex = 21;
            //
            // crndisplay
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(501, 170);
            this.Controls.Add(this.sstn);
            this.Controls.Add(this.iotype);
            this.Controls.Add(this.crnsts);
            this.Controls.Add(this.sloc);
            this.Controls.Add(this.wrksts);
            this.Controls.Add(this.errinfo);
            this.Controls.Add(this.dloc);
            this.Controls.Add(this.dstn);
            this.Controls.Add(this.crnid);
            this.Controls.Add(this.labelX6);
            this.Controls.Add(this.labelX7);
            this.Controls.Add(this.labelX8);
            this.Controls.Add(this.labelX9);
            this.Controls.Add(this.labelX10);
            this.Controls.Add(this.labelX5);
            this.Controls.Add(this.labelX4);
            this.Controls.Add(this.labelX3);
            this.Controls.Add(this.labelX2);
            this.Controls.Add(this.crnno);
            this.Controls.Add(this.labelX1);
            this.DoubleBuffered = true;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.Margin = new System.Windows.Forms.Padding(4);
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "crndisplay";
            this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
            this.Text = "堆垛机信息";
            this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.crndisplay_FormClosing);
            this.Load += new System.EventHandler(this.crndisplay_Load);
            this.Move += new System.EventHandler(this.crndisplay_Move);
            this.ResumeLayout(false);
        }
        #endregion
        private DevComponents.DotNetBar.LabelX labelX1;
        private DevComponents.DotNetBar.LabelX labelX2;
        private DevComponents.DotNetBar.LabelX labelX3;
        private DevComponents.DotNetBar.LabelX labelX4;
        private DevComponents.DotNetBar.LabelX labelX5;
        private DevComponents.DotNetBar.LabelX labelX6;
        private DevComponents.DotNetBar.LabelX labelX7;
        private DevComponents.DotNetBar.LabelX labelX8;
        private DevComponents.DotNetBar.LabelX labelX9;
        private DevComponents.DotNetBar.LabelX labelX10;
        public DevComponents.DotNetBar.Controls.TextBoxX crnno;
        public DevComponents.DotNetBar.Controls.TextBoxX crnid;
        public DevComponents.DotNetBar.Controls.TextBoxX dstn;
        public DevComponents.DotNetBar.Controls.TextBoxX wrksts;
        public DevComponents.DotNetBar.Controls.TextBoxX errinfo;
        public DevComponents.DotNetBar.Controls.TextBoxX dloc;
        public DevComponents.DotNetBar.Controls.TextBoxX iotype;
        public DevComponents.DotNetBar.Controls.TextBoxX crnsts;
        public DevComponents.DotNetBar.Controls.TextBoxX sloc;
        public DevComponents.DotNetBar.Controls.TextBoxX sstn;
    }
}
version/STWCSMapEditor/WCS/crndisplay.cs
New file
@@ -0,0 +1,104 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
namespace WCS
{
    public partial class crndisplay : Office2007Form
    {
        Point formPoint;//记录窗体的位置
        Point mousePoint;
        public crndisplay()
        {
            InitializeComponent();
        }
        private void form_MouseDown(object sender, MouseEventArgs e)
        {
            mousePoint = Control.MousePosition;
            formPoint = this.Location;
        }
        private void form_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Point mousePos = Control.MousePosition;
                this.Location = new Point(mousePos.X - mousePoint.X + formPoint.X, mousePos.Y - mousePoint.Y + formPoint.Y);
            }
        }
        private void crndisplay_FormClosing(object sender, FormClosingEventArgs e)
        {
            Common.form2 = null;
        }
        private void crndisplay_Load(object sender, EventArgs e)
        {
            ////堆垛机状态
            //try
            //{
            //    int crn = 0, wrkno = 0;
            //    crn = Int32.Parse(this.crnno.Text) - 1;
            //    this.crnsts.Text = Class1.GetCrnStsName(Class1.crn_i_crn_sts[crn]);
            //    if (Class1.crn_i_crn_sts[crn] == 8)
            //    {
            //        this.errinfo.Text = Class1.crn_ycmm[crn].ToString() + "-" + Class1.crn_yczm[crn].ToString() + ":" + Class1.GetErr(Class1.crn_ycmm[crn], Class1.crn_yczm[crn]);
            //    }
            //    this.crnid.Text = Class1.crn_i_Wrkno[crn].ToString();
            //    this.sstn.Text = Class1.crn_i_fstn[crn].ToString();
            //    this.dstn.Text = Class1.crn_i_tstn[crn].ToString();
            //    this.sloc.Text = Class1.crn_s_Flocno[crn].ToString();
            //    this.dloc.Text=Class1.crn_s_Tlocno[crn].ToString();
            //    DataView dv = Class1.ExecAsrsSelect("select wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no="+wrkno);
            //    if (dv.Count > 0)
            //    {
            //        foreach (DataRowView drv in dv)
            //        {
            //            int wrksts=Int32.Parse(drv[0].ToString());
            //            int iotype= Int32.Parse(drv[1].ToString());
            //            DataView dv1 = Class1.ExecAsrsSelect("select wrk_desc from dbo.asr_bas_wrkstatus where wrk_sts=" + wrksts);
            //             if (dv1.Count > 0)
            //             {
            //                 foreach (DataRowView drv1 in dv1)
            //                 {
            //                     this.wrksts.Text = drv1[0].ToString();
            //                 }
            //             }
            //             DataView dv2 = Class1.ExecAsrsSelect("select io_desc from dbo.asr_bas_iotype where io_type=" + iotype);
            //             if (dv2.Count > 0)
            //             {
            //                 foreach (DataRowView drv2 in dv2)
            //                 {
            //                     this.iotype.Text = drv2[0].ToString();
            //                 }
            //             }
            //        }
            //    }
            //}
            //catch (Exception r)
            //{
            //}
        }
        private void crndisplay_Move(object sender, EventArgs e)
        {
            //(sender as crndisplay).Refresh();
        }
    }
}
version/STWCSMapEditor/WCS/crndisplay.resx
New file
@@ -0,0 +1,451 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAEAgIAAAAEACAAoTAAAFgAAACgAAACAAAAAAAEAAAEACAAAAAAAAAAAABIXAAASFwAAAAEAAAAA
        AAAAAAAAAAgIABAQEAB7QhAAjFIQAAgQGAAYGBgAISEYACEhGAA5KRgAEBAhACkhIQBaOSEAjFIhAJxa
        IQAQGCkAGCEpACkpKQBaOSkAezkpAHNCKQBrSikAc1opAIRaKQCUcykAMTExAGNCMQBrSjEAY1IxAIRa
        MQCEYzEAhGsxAJxzMQBaOTkAWko5AGtKOQBzWjkAc2M5AIRjOQCMYzkAjGs5AJxrOQCtczkAMTFCAEIx
        QgBKMUIAQkJCAIxjQgCMa0IAMTFKAEI5SgBKOUoAOUpKAEpKSgBaSkoAe1pKAIRrSgBrc0oAKSFSABgx
        UgApMVIAQjFSACk5UgA5QlIASkJSAGtKUgB7SlIASlJSAHtSUgBrWlIAhFpSAHtjUgBza1IAlGtSAIRz
        UgBze1IAnHtSACk5WgBCOVoAOUpaAFpKWgBKUloAWlpaAEI5YwAxQmMASkJjADlKYwA5UmMASlJjAFpS
        YwBaY2MAa2NjAHNjYwCMa2MAe3NjAIx7YwCle2MAnIxjAKWMYwC1jGMAMSlrAFpSawB7e2sAvaVrAEpC
        cwAxSnMAWkpzAEJScwBKWnMAWlpzAFpjcwBrY3MAe2NzAFprcwBza3MAc3NzAKWEcwAxMXsAWlJ7AGtS
        ewA5WnsASlp7AEpjewBaY3sAe2N7AHN7ewB7e3sAhHt7AJR7ewCUjHsApYx7AK2cewBCQoQAWnuEAL2l
        hAAxOYwAUkqMADFajABKWowAY1qMADljjABSY4wAa2OMAEpzjABac4wAY3OMAHNzjACEc4wAY3uMAHN7
        jACEe4wAjIyMAJyMjAC9pYwAY2OUAHNjlABCc5QAUnOUAFpzlABSe5QAjIyUAJyMlACcnJQAxq2UAMa1
        lABSSpwAa1KcAHNrnAA5c5wAa3ucAGOEnACEhJwAjIScAFqMnABrjJwAnIycAIyUnABjWqUAa2OlAGtr
        pQAxc6UAjHOlAEJ7pQBKe6UAUnulAFJ7pQBjhKUAc4ylAGOUpQCclKUAY5ylAKWlpQC9paUAvbWlAIRz
        rQBCe60AUnutADmMrQBSjK0AWoytAISMrQBalK0Aa5StAIScrQCUnK0ApaWtAL21rQDGta0AxsatANbG
        rQBSjLUAWoy1AFKUtQCEnLUAra21AISEvQBKlL0AY5S9AEqcvQCEnL0AnJy9AGulvQCtrb0AnLW9ALW1
        vQC9vb0Ac2PGAJyMxgA5nMYAUpzGAHOtxgCErcYApbXGAL29xgDGxsYAnJzOAGOtzgCUtc4AhL3OAMbG
        zgAxrdYAUq3WAFqt1gBrrdYAnL3WALXO1gDW1tYAQr3eAHPG3gAxtecASrXnAK3W5wDn3ucAnN7vAO/v
        7wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAJUxfJhYWJTk5S0t/v4Fmfn5mgC4ZLgcHC87qIhkZBwmBAOEWAX0uGQcQBxk/eoWU
        rq6+ytTk9/f65AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAABnhoZMYYGioqCgoLCwl4FvgaK/GVJ+CAcC0O8UExEEA4MA6ikBfjQH
        EBkZV1fK5ufmvMm+5eT3+fnw9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExefqKBXJeib5eib6uholWgopgZW4EJEgvhAGM3Lg0O
        hvbvTAF+NBA0WxEZeJyMn4WUn63J1OT5+fD0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAokrWq3Nfl0hKSiSW9nNf3NakgDZzoiNF
        OqvvpIB1U19HguF0AX0ZECuiAgI+V015WD+pn5+c1OTk8PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD80OiyNhtcIjgWFoL8XEzv
        1qSZXDM1RFxkdUekmIeEe1uC0aFRlS4ZVs0QBRkFVsbanLt7e3qcjMXk6AAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ZNFLzdI
        oiUkv+A2SsGi0aReMzZHcz1TRaOYaHt7b5jhzaCVWgEKlRAKVitr5uWc7bu7WD5XeIzfAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AACrd0EmI0XqXUX86xsm1qGkgaFFRX+YGS024ZhAUhk2X/bAoH99DwoZCz+7Vnjm+MftyeadnGs7e9YA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAMJ3QRYMEiQkHEixGhanjmGBRRlcLSI2NjZSIVwZgF5cXEdwXFEKDzEZkdV4kK3JuIyf
        rYzEjKhXvQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAqXdcOEojShUMI6USFppvYqKiNlwzIS0sLVJBUS1zUllFSVlcGRlYkVaq
        lJ+7/fjstsmPjIx4aXqiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWfn5+fnJaWlpaWlpa
        WlpaQ0BRUS4ZWVrvzeHNc832zX+gvfZ+AADIdkVKRUWDdEqApUc4izYeos5dXC0jERkZQTcxGXNSlYA3
        fFtVlXmVV+euxMr7+PLD2LfY8p96eqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfn5+fn5+
        c1tbW1paW1tbWlpaW1IZQFtSWlos6vzWc1JSUlKX9n/+77NoNkojI0xMJZbiR4HCf0y/4YBzLCE2QDZc
        JkAZNjZQgEpZoLvIqejf25TDkLvdw8Ps0sSceE55sAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        1n5+fn5+fn5zWltbW1tbW1tbWlouUn5bWjURLlJal5dSUlJSWlrh9uq/oJtbSVwkJi8WgNdFX+OAYb/h
        gnNAITMzLW03WS2Yc6FgRUXNqei7vdawlaqUrp6UqpSdbFdNK2x+cytbAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAL9+fn5+fn5+fnNaW1tbW1tbW1tDNXOifkMRGUNSQ0NSWlJSUlIRGaDvor/Nd1w4IhsmIxVf
        pzhJ1l2DouGYXDMhGRktUDdVLZVZlGBdQaL2y7Cwb6Gvu8ze7ubz8/PU2tR4nVEAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAACgc35zfn5zfn5+c1tbW1tbW1paQ1KXoKDWWi5aW1taWlJDQ1IuGVJb4erv/OB3
        cEwiI0lKFmCmOCe1dKRzv5ihWUI2UDNBIzMhXEGVTEZBoZSrbat7rKC3jd7z7Pjy8YzY2FSNsAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAln5+fnNzfn5+fn5zW1tbW1tbWlJ+l5d+c9Zzc1tbW1paWlo1EUNz
        c1taNQAA6ptbMF4kJjcdSaYmMKeC0TXPoqFZNjZALFs3by1zRUUqR4Cw27t55427u9Op7vjZ89PUeI2M
        eo2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9+c35zUhkuQ1JbfnNaW1taWltboKCXWkN+6vagWlpb
        WlpSGVt/Wlugcy5bAP7gd1AfIiMoJBdfiElMtYPPGb+i9pJBMzIzZUFYLXNIoUxHpKC6u3qpbJW7u8ut
        5rrKrtS41LiMuEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANZ+fn5+fkMZNZd/UgcGLjVSNRkZGRmXcy5S
        Wlt+fnNaW1pSGVqXoH9aGaKXb1oA/r92NhccGigWGEqISUzCpL8Z6s/WrHBQaFVQI042q1ugYF3Pv42N
        TXtXWbvKeubs7MTZ8YnHVlR7lgAAAAAAAAAAAAAAAAAAAAAAAAAAAADNfn5+fn5+fn5+Ui41Li4uERl+
        GREHB79/UhEZWn5+flpaUlJ/l5d/GXOXoM1zUv78oHZBFkgkFyUgSYhMYdfPly7qz6+SQXeLdnZEdllZ
        UFtJgM+9jWtNVj9ZbnpY2eXlna3GeHppiqm9AAAAAAAAAAAAAAAAAAAAAAAAAAAAsH5zfn5+fn5+fn5D
        LlouLkMZfpdaQy5Dzc1zGRkZWnNzWluXl5d+zX9bfnNSNS5D/vV/ajYWIyUYJiA4mkxi1+FeNeHWvWhc
        W6d3klx2dqByc2CYz72fnYyNMVFYe1ic2NRubnp6eMOMp1FyvfYAAAAAAAAAAAAAAAAAAAAAAJZ+fn5+
        fn5+fn5+fkMuoltDQy6XoFpaWjV+c0MZGRkZGS41WpdzQ1LN4aBbUi4ZGS726GZZIxYjJB84OF2zYnTX
        6i42v3xVyN58dlmAXZF3kZSVdJjOsPTK2Z9pa3p6eJ67e3q4ucdUjFRuNTU1UgAAAAAAAAAAAAAAAAAA
        AAB/fn5+fn5+fn5+fn5+zX7v/PaXQ5eifltac39DUlpDWlIZGREu1nNSW1tzNREuGRErUfXNfl9fJSUl
        KEc4c7ODmdfQgTZSZaze3kF2rKBdlnzIzal0mN67u4V6a3lpa5x4e5E80rSMaVeRT1E0LjJSAAAAAAAA
        AAAAAAAAAAAAfn5+fn5+WlIuQ0NDGRlzfnO/739Sl+qXf35+on5bWnOic0NDQ1rWoltSLhkHES4uQ0NQ
        zZegoqKiooFKSEtzp6K/1+qBLjY2cOpvW6zc4HCTk82i3oKiu1hRcXNXelZYeFRYbQ+cuFQxGVh7GTUu
        GRkAAAAAAAAAAAAAAAAAAH5+fn5+fn4uAQEAAAAABzWioL/Non+/6pd/cxFDf7+XW79+WlIuBxFDGQcH
        EREHGS4ZGS5YUlFSUlI2NVJbUllZLlpvfjUZLi4ZGTNSb3N+WzWgf1tZRVtRQECVsG5ZUVFYUVFRQ1hX
        UTVAQDMZBwcZWgAAAAAAAAAAAAAAALB+c35+fnNbLgIAAQAAAAJDW83W6vy/W5fhl39zGRk1QzVaf7+/
        fxkGBgcGETURERERNXNAGRkZEQYRGRlAUlFSGREZNX5cGRkCBhkuNC5SLr9/Nb+gGW+XLi4sAVJ+WTVA
        NTUuLi4uNS41LhkKBxlDUlJyAAAAAAAAAAAAAACXfn5+fn5+UjV/EQYCGTUZNUOif3/NzUMRf+qgf39S
        Q0NaQ0MZLkMZBwcHBwcuQ1JDLhFbl1EHERkZBhFSUlI2W39SBhkZGRkRLi4uLhkZEREZor0ZBwYZoL1b
        MlIGNDU1NSwZCxEZNTUZBwcZQFJaUlJDQ1kAAAAAAAAAAAAAf35+fn5zczVSv+FSNS5bGQYRf3M1GQcC
        GRl/6pd+fhkuQ1JzWhkHBwcRERkuLkNbWlJSNTU1NREZBwcHEVpSLhlDf1IRGRkZQ1JSQy4RERkZEQcG
        BhEZNVpbc0OXolo1GQcRNRkZBwYHBy5DWltbWlvWfi4yUgAAAAAAAAAA4H9+fn5+flo1c9b29nOgNRkR
        WqC/f39zAQIZLqDv7+GXGRk1GRkRBwcRGRkZGS41LlJzQy41UlJSNTUZGQcHfn4uGRkZERlDQ1JSQzWg
        cxkZGRkZERkuLjUuLi4ZGVKXLhEuQ1taERkuLlJaWlt/QzU1WuGgNTVZAAAAAAAAANZ+fn5+fltSGaCg
        9vz2c6A1GaC/f0OXl5cCBy5bfqDN1lI1NRkRBwcRGRkZGRkZLhkZEQcHGVp+WzU1WlpSBgY1UhkRERER
        LlpSNS4ZGX5/GREZGUM1NRlafy4RBgYCBxlDWltaNb9/NRlDUlI1c+p+NTU1UkM1NVIAAAAAAAAAon5+
        fn5+GQaXUgb2/vZ+l1LNzX6X76KXf0MZNVtaf82iQxkREQcHGRkZGRkZGS4ZEQcHERkuGS41NVpaWkMG
        BgcuQxkRGRE1f0MZGRkZERlDQ1JDNRkZGVuXNQcGBxk1LlI1oKIuoqIZon4uLgJSf1s1NTU1NTU1UgAA
        AAAAAACifn5+UjVSlxk1oPb89nOgNRlaf832opd+AAJzoKB/onM1ERkREREZGRkZLi4ZEQcRGRkZLhkZ
        Li5DWnN+WhkZB1tSWlo1NS6XUgcRERE1UlI1NXN+GRERES4uUi41GRkRERFSoBkZUnPqoFt+GTUuGS4Z
        BwYZGRkZAAAAAAAAAKJ+c1ouv3MRGaBz9vz2fqJbUlqXze9/l38GB39+v6LWWkMZGRERERkZGS4ZGQcH
        GRkZGRkZGS4ZES5aW39aGS41UnN+WkNDUlJDGREHERl/WhkRLloZLjVDWjVaWhkZGREGBgcuQ0NSQ0Mu
        l81DBxEZQxkZGREZQ28AAAAAAAAAonM1c7/2fn81f7/v/O/N70MZW6DN1tbNoBERUkO/fnPWQxkZLjUZ
        GRkZGREREREZGS4uGRkZEQcZLlpzf1oZLjURERkZUlpaWkNaUhkHEXNbBxERGVtDQy4uGXOXNRkuLkMu
        LkNzGREHBgIRUlpaWlpzcxkZWlpSbwAAAAAAAACXNX6i/P5+okOg1nPN7y5DGRlaoHPNoC4RGS4RQ39z
        WkMGBwcHES5DUjU1LhkRERkZUnN+GQcRGRlDWnN/Wi4ZERERGS41Q0NDc3NSLi4ZNTUREQcRW1oRERkZ
        LjVaQ1pDLhkZW6A1BgcRGUNSWlvWNaDWWn9DNRFSAAAAAAAAAH+/WkP+/n6XQ9bqoqB/l39SGVt/oDUH
        BhEHGRkuWltDQxkHBxEZGRkRQ1IZQ1pzW1tSc38uEREZGUNbW3NDERkZGRkZGRkuLhERLi4ZNTVSUlJD
        NRl/WwcHERlbLkMuWpcZERkZNS4ZGRkZGQcGGeFaUpeg9nOXGTUAAAAAAAAAzS5azf7+f6Ja9tZSoJdD
        GQcGES5DWn41GQcRGRlaWltDGRkZEREuNTVaQxFSl6CXon5/fi4ZGRkZGRk1GRkuGRkZGRkZGRkZGRk1
        Q1JaQ0NbQ0NDWlJDLhkHEXNbBwcZUjUuNTU1Q781BwcREREZQ0NaWjUuWu9aWgAAAAAAAABzl1pD/v6X
        1s1+Un6gfxkRERkZGVpDLhkZERkRUlo1czUZBxEHGXNDQ3NSGVqion5/c5egQy4uNTUuGRkRGRkuQ1pa
        NUNDflIuLjVzf35SBwcZWlJSW1pSEQYHW1IHBwcZQ0MuLhkZv1oZLi4ZLhnWUgYHGS41fnOwAAAAAAAA
        AL9DB1r27+nWf/aiWlt+f38ZQ5dDUkNDEREBEVt/WjV+QxkHBwYRfkNSl1oZWr+/fn9SW5dDNRkZNRkZ
        LhkuLi5bc39bc1p/WhkZGXO/f1IHBwcREREZNRkHBi5DQ0MuEUOXLgcRGS4uQxlbQwYZGaJzNVJDLi4Z
        Q/wAAAAAAAAAWhlbc1u/W71aW3Nzl3Muc1suLjVSUn4uGRkZf1tbGXM1EREZUjVSGRkZNRFazaJzl0Mu
        LjU1UltbGRkZNS4uLnNzfn5+W5daEQcHW79/UgcHBxERERkuLhkRNVpSUkNSWlIuGRkuWxkZGXNac1ta
        Q6BSEREZGTVSfgAAAAAAAAB+fjWiWluXc35+LjUZGRk1GREuNVtSfhkZGRlDLlsZLhkZGVouGVI1Q1Iu
        GVKXl1tSGREZWlpSc3MZGRkZEQcRl5egf1taoFIHBxFafn5aBxEZLjU1Li4uNS4ZNTVaUlJaUkMRLlJz
        GRkZc1JDNRkZv5dSWlJDLn/NAAAAAAAAAH+Xl0OXcy5Sc341GS5+GRERGS5SQy4ZGRkZLhEZWxFbNRku
        W0MuQxkZLhkZGTU1LhkRBxFSc1p/fxkZERkZLi5+c35/LlqgLhERERlDUkM1NTUuLhkZNTVDNS4uLjUu
        WqKXUhF+flJbNRnWQwcRUlpbW1uiLkM1c7AAAAAAAAAAzVKXfjURGVJ+fn9/oENbvy4uLlJaB1IREREZ
        ERlbEVIZLhlSGRk1GRkuLi4ZGS4ZLhkZNUNbQxkZGRkZGRkGAgcZUn4ZUqIuAhEZNTU1LhkZNUM1LjU1
        NS4uLi4uNUN+4b9aGVpbW35aUlouBxF+lwcRWn5bc1Iu1gAAAAAAAACifjUZEX4uUn6i1louGS4ZGVKX
        flKXNTUZGREZGVsRLhkZGXNbLjUZGS4ZLhkZGS4ZGRkuGVJDQ0MuGQcHBwICBgdaWxEuWhkuGRERLkM1
        Q1I1LhkZQ1pbLhkuNTU1Ln7hv1o1NS41NUNaQxlac1paEQeXQxEZQzWhAAAAAAAAAH4ZBlpaNVuX6vb8
        c6BDGVJboEMZLhkZGRlSGRFDWxE1NRkZWlIZQxkZLhkZGRkZGRkZGS4uQy4uGREZGS41NRkZGVpaLkNa
        GRkRNVtzc5dDLlJSUkNbopdSLi4uGRkuc7+gWy4uLi4uNTUuGVpbUlJDW3MZBxmiNS4AAAAAAAAAQzVb
        GX+Xl1LN/P5boFuX6n5zl3MZGTUuGUMZGVtaGRkZLi4ZQxk1GREZGRkZGRkuLhkuGTUZGTUZNTUZNS4u
        LlJSWlo1NVo1NTVbc3OX4VtSQzU1Q3/hv35SQy4ZLi5DWkNDLi41Li4uLi4uNTU1Q1tbUi5SQ34ZGQAA
        AAAAAACiNX6XlzVSoun+/H5/Whlbfr+gfkMZGRkuQ0Nac1oRNTUZLjUZLkM1LhkZGREZLhkZEQcZNTU1
        NRkuGRk1Li41c35bWnNzWjVDW5egf37qc1JaW1tbv9ai1nNSW3NzfloZNTUuGRkuLjU1NVJSLjVDQ1JS
        Q1pSUkN+AAAAAAAAAKKi1s1+cxlR1vz8c6JaGXN+v6BbLi4ZGS5+WnNaWxlDNS4ZLi4ZQxkRLhkuGRku
        LhkRGRk1NS41LjUuLjUuNTV+oFtac3NDNVJDc5d+c9ZDWlpDWlugfn/qf1J/6u/2oFtaQ0MuNTUuGS5z
        4aBSNS41otZaNUN+Wn4AAAAAAAAAv3/+4aCgUlLN/Px+v34ZW36/oH4ZGS4ZNX5zflJbERkZNRk1GRk1
        GRkZLlIZGTUZLi4uLjVDQxk1QxkZNS4ZLn+iolpzc1JDQ1p+f35zoJe/oFJ+f1JaWup+c3/v9vagW3Na
        f5egv1JDQ37hoFI1NTXh6nNaf6CgzQAAAAAAAACiv/7hoqBSWqLq9uH2l0N/W6Cgf0MZGRk1fnNzUlsZ
        QzUZGUMZGUMZGVJzoFJbLhkZGS41GVI1Q0M1Li5DUhlDc6KiW3NzQ1pbW35zW1vq9vzhf1p+c1pSv1pa
        W+/v9qBbc1rh9vb2f+DhzeqwWlt/l+rqfqCioqK/AAAAAAAAAFp//uGioHNzUr/hf3NzWlpbf6K/f38u
        Qxk1NXNSWwdDGRkZNRkuQy4ZNX6iWnMuLhkuNS41NUMZWlpbc6B/c1I1LlJaNUNSQ1t/l39zW/b8/NZ/
        l79/Wltbf35zoJdSUlq/l+/29vaW/PzW4b+gzb+izc2XoKKior8AAAAAAAAAor/+4b/NW7+if35+NTUZ
        GTVzNVJaUhkuGXNbUlJbGS4ZNRkZLi5SGRlbl6Bbc0M1GRkuQzVDQy41NaCi1qCXWkMuWlvNl1J/W1uX
        flpb9vz+1n9+fnNSW3N/W1tzoFtzc5daoOHqzaL8/L324db29u/v6qCgoKKizQAAAAAAAACil6K/9tZ+
        flJ/f1tzUhF/LhkuGTUZGRkZLhkZUlsZQzVSQ1suLjUZGVpbc1JzNRkZNVpaQ0M1Li41oKDhoJdaWlp+
        W+qiQ35ac35zWlK/zc1/flqXf1Jzc6B+W1ugW1pb1nOgl5d+funNovbW1vb29gAAAAAAAAAAAAAAAAAA
        AHNboHN/c1J+c1taNRlDGUMuLi5bWi4ZGRkZGRk1Wxk1GX9SUjUZQy4ZLi41NVI1LhlSW1tDQzUuNUOi
        v+qgl1s1Wltb4aBal1JzUn5zfn+wsLBzfr9aWlJzfnNbfn5zWnPWf6Kgl5d+zaCgvdbW9vb2AAAAAAAA
        AAAAAAAAAAAAzVt/Wi5DNZd+W0MuLjURGS4uGS4uNS4ZERkZGS5bEVIuLhk1GRlDGRk1Li4ZGTUuLjVS
        UjVDQxkuNX+XonOXWkNbc1ugfkN+oKKgoJeXW1ugW3Ohv9aXW35aUkNzflpDfr9/oH+if1vhoNbq6u/2
        9vYAAAAAAAAAAAAAAAAAAACiUjVDc5d+l35+QxkRNREZLi4ZNRkZGRkRNRkZGVsZUjUuGUMuGVIuQxku
        LhkuLi41UlpaGVJDLjU1LkNSUjU1NUN/W35+W3Nzon+XfnNzWn5zc/z29r9+Wn5zc3OXWlpav1vNf82X
        W++/zerq7/b29gAAAAAAAAAAAAAAAAAAAKBal0N/QzV/WkMuLlt/GRkZGREZGVouGRkuGRkuWxE1GS4u
        Qy41Wi41Lhk1GRlDNRkZNS41Q0MuNUNDNVI1WlJaUnNbNVJDUpfv1n9+W1tafltz/O/2opd+v6J/c5db
        c36gf35/oHNa6qLN6urv9vb2AAAAAAAAAAAAAAAAAAAAzUNzGS5DLluXv7+il1tzWjVafn9/WxEZERER
        GS5bEVsuGS4uNRlSGS4ZGS4ZGTUZGRk1UkNSQy41NS41Q35/fltSf3Nzf1pzl/7qf35bW1t/WnP86uqg
        l3PW1n9+c3NzouHNf6Cgl37NoKDN1tb+/PwAAAAAAAAAAAAAAAAAAAB+LjUZLnOw6aBSNUNDQ35/Un5/
        NUMuGRkZNRk1LlsZWzUuGRkuLlIZLi4ZLhkuLi4ZGTVaQ1JDNTVDLkNDv+G/fn5+c1pzQ1p//Om9oKBz
        ouG/b6K/UlpbftbNf35+c1rq/Pai6uq/fvZ/1urq7/b29gAAAAAAAAAAAAAAAAAAAH5Df6C/fvb8l6B+
        Nc1zf341ERkRGRkuGRkuGTUuWxlSGS4uLhkuQy4uLhkZGRlDGRkRQ381W1I1NUM1Q1LN1qJ+fpdzf35b
        l7/h4fz29nNzf35+W39+W3N/fltac39SWtb876L26s1//JfW6urv9vb2AAAAAAAAAAAAAAAAAAAA76Ja
        NVpz/P6goH8ZczV+oFouLjU1NUNDUpcZGTVbGXM1Qy41NRlDGRkuGTUZLkM1LhkuNTVaQxkZNRlDWs3W
        v3OXzXNaflJzl6Dg/vz2f1t/fn9afn5bc1tzW3Nzf3NzoKJbf9bWl378l9bq6u/89vYAAAAAAAAAAAAA
        AAAAAAD+zaJ/l7/+/qCgcxlaWs2iWzUZLhlDWlJaoi4ZLlsZWy41GTU1Lls1WkM1LhkuNS4uLkM1LlpD
        NTVSQ0NbWjVSQ3PWc1JbWltac83+/PZ/Wlt+l3N+l1p+fn9+W36Xc1t/v36Xl5egfs2XoM3q1v789gAA
        AAAAAAAAAAAAAAAAAP7Won9Dc/7+oKJ+GVpazaJbWhkuGUNaWlugGRk1WxlaGRk1NS4uc1JbQ0MuGRlD
        NRkZUkNDUlo1f5dbQ0NDWlpbf79zW3NSWlpzzfb24ZZbc3Nzc5eXWpdzc35ac35zWn7hl7+gzaB+6r3h
        6u/v9vb2AAAAAAAAAAAAAAAAAAAA/taifjW//v6i1pcZUluil1pSGS4ZWn5+WqIZGTVbGVo1WhlDLi5b
        W1taNS4ZQ1pSGS41UlJSWi6Xon5aNVp+UpfW6n5zflp+c5egoqKioKK/zX6gzVpaWn9zWlJzc35DoPa/
        4aLWon7v1uHq7+/29vYAAAAAAAAAAAAAAAAAAAD+1qJ/GZfhoKKioL+if39bWlIuLhk1NUMuUhkZNVtD
        Wy5aNUM1Q1pbczU1Lhlafls1LkN+UjVSQ7+gflJDW39aWn6gc36XWr/N1qCXfn5/oNaiv1tzfnN+fn5a
        W3OgWltz6nOioM2gc+/N1urv7/z29gAAAAAAAAAAAAAAAAAAAL9zoJd/v+qgl6BzUjVDNTU1QzUZGTUu
        Li5DNVJDW1pzNS4ZGTVDWzU1Qy4ZGVuXWjUZLqBSQ1o1oKJ/W3Oic5dbf6BzW39Sv39+fn5zc37N/OHq
        fn+gc6J+c3Nbfpdzc36/fpeioH5+zaCg1urh/vb2AAAAAAAAAAAAAAAAAAAA6aKic35aW5c1WkMZGUMZ
        GS4RNUM1NS4uLjUZNUNbQ35SQ0NDNS5aLkMZLi4uLlIuGRkZLkNaWi5SUjVDQ1tbQ1JzfnNzc1vvoH9z
        c1u/ftb84eF+oNZz4X9zflt+f5dSf++/l6C/l37vv83v6u/29vYAAAAAAAAAAAAAAAAAAACgNUM1Li5D
        ly5+Qy4uLhkZGRkZGRkuLhkZUi4uWltDWxkuLjU1LnMuWi4uLi4uNTUuNUM1NUNaGTVDQzVSUkNDNS5/
        c1JaQ+Cgl1tzfs1+1vbWv5fNzVvWf5d/Un6goFKi/uqiotagf/bNzfbq7/z89gAAAAAAAAAAAAAAAAAA
        AH8uNRk1LlJ/LlJDGRlDERkZGRkuGRkZGRE1GS5aW0N+NS4ZWi4ufy5aGRkuGRk1NS4ZQ0NaQ1s1UlJb
        c3Nbf1pzfr9+f39v6aK9l5eizZeiv79zoM1bW1uXf1pDfpdzUpf+4aK/1qJ/9r/N9urq9vb2AAAAAAAA
        AAAAAAAAAAAAABk1Lhk1Ln4ufloZGTURERkZGTUZGRkZETUuGXNbQ341LjVaNUN+LloZGTUZGVIZGTV+
        f1pSWy5aW39+f3+/v35+4X5+oFLp9vyic1tzf3Nzc35bc39ac35zfnN+l1tzfr9bf5e/c3PpsLDN6s32
        9vYAAAAAAAAAAAAAAAAAAAAAGS4ZLi4ucy5+QxkZNREZGRkuLhkuGS4RUjUufltDWxkuNVtSQ341Wy4u
        UhkZcxk1Q5eXW1JbQzVbf39/f+Hqfn9/fnN+W/z+/r+XWlt+W3N+f36XolqXf39/W35/W1t+75fNos2i
        f+/Nze/q6vb29gAAAAAAAAAAAAAAAAAAAH8ZGRkuQ0OXW6CXl5dzBxFDLlJSUhkHGQdSLkNzW1J/NVI1
        WlJDfjVzGS41GRlDGTU1oKBzNVs1NVp/f39+1up+l6J+c35S9v7+v39bWn+XW3+XoL/NWqJ/on9bf5dy
        Wn/+ouG/1r+X9urh9u/v9vb8AAAAAAAAAAAAAAAAAAAA4ZegouHNoJdbf3Pq76J/fkOXl6B+oEM1LkM1
        fqBzfnM1QzVDWlp+Q0NDNS5DW3M1GS5DNVJSWhkuQzVDUlp/olpSv35bW1vv1taXl1tSfn9bl6Cior9S
        on+if1qXoHJSfvyi1s3WzZb26eH27+r29v4AAAAAAAAAAAAAAAAAAACXLkOg/uGgoEN+c/78zZeXGXPq
        4X9/fjUZczVboHN+fi41Q3N+Wn8ZfxkuNVqgl3OXLkNzW1t/LlJSQ1Jafn5+c37Nfn+XWqKgoqK/v6K/
        oqKiWn6XW1pal35bWpaiUltz73Oil9aXc/bhzer24Pz8/gAAAAAAAAAAAAAAAAAAAJcZLqD+4aCgUn5+
        /v7NoKARfr/ql3+XWhmiLr+/fqB/NVJSl79zlzV/GTVzl+rWf6IZUqBzl6I1NVI1Wltzf1Jzc6J/v81z
        l1pzW5fW739+W6LNv6CXWqB/oqB+9vbvoVv8c+/v9vag9vbWzfz2/vz+AAAAAAAAAAAAAAAAAAAAvxEy
        ov7hoqBzfn7+/M2glxFzoM1/f1taWr9Dv79+oH4ZNVq/1n6XQ34ZNX6i4dZ/oBkuzXOgoi5aQy5ac3N/
        W39/1n/N1lvNWnNbl+H2f35zv+HWv6BazZfNoJf2/Pa/c/5z/Pb89s38/Onh/OH+/v4AAAAAAAAAAAAA
        AAAAAACiES5/9s2golp+f+/vsKCgGXOioqB/fi5z1jW/v36gly41W7/Wfpc1ly41fr/h6n+iGTXNc6C/
        Q1o1NVtbW5dbf5fhf83WW9ZbfnOX4e9/f37N1ta/l1rNl82gfvb89qJz/nP2/Pb8ovz86db84f7+/v4A
        AAAAAAAAAAAAAAAAAJcRLlJ/W7+/fn9bl39bc1sRWn9/Q1pbGRlbLn7Nc3+XNVJSl39boC6XNS5SQ3N/
        UnMZUqJ+Wn9DUkNDUlJbl1p+f81+f6Bzv1t+fn9+fn+Xfpegor+/UqKXon9boM2gfn/+v+Hq6uDN6fbv
        9v72/v7+/P7+AAAAAAAAAAAAAAAAfzVDNUM1f5d+c0M1LhkZLhk1QzU1QzU1NTU1Q6JbfpdDLi5DUlJ/
        GUMZGRk1Ulo1GS41NXNbfxk1UhlSfn9SW1pS1n9af1t+l82iv5eX1uDW1kOgzX9ac5eiW1qXv1paoPyi
        4er2ze/8/Pb8/v7+/v7+/v7+AAAAAAAAAAAAAACiUkNSc1tzUkM1f1JDNRkZc1paUjVSNVIuWlJ/zVt+
        lzVDLpdaWqA1oC4uQy4ZWxkuETWifkN/Q39+Qy5SUpdboqLhf36/c5dzoH6gW1r2AAD2f6K/1lqil6CX
        c5eif1ui/uH29vzh/Pb8/P7+/v7+/v7+/v7+/v7+AAAAAAAAAOGioqK/v7+ioqC/opeXf36Xc3NbWlta
        UjVzWluiUn6XQ1ouoENaojWgGS5DLhlbGTURQ6J/Q5c1l5dDQ3Nal1q/4fZ/f81bfnOif5dbUvYAAPaX
        oM3NUpeXzZdbl6J+Wr/+1u/89un8/Pz8/P7+/v7+/v7+/v7+/v4AAAAAAAAA4KKioqK/zb+/v7/Nv7+/
        v82/v7+iv7+/os2/v9agonNbW1Kgc1uiNaIuNVoZGXMuLhlzl39Sl1KgflJaWnOXUqLh739+v36gW5d/
        oFpa9gAA9pegor9af6CgoHOXopdzzf7h7/b24fz8/Pz+/P78/P7+/vz+/P78/gAAAAAAAADgvb2ior+/
        v7+/v7+/v7+i1r/Nv7+/v7+izb+/6s3hv1Jac6BSW6A1vy4uUi4ZWy4uGVK/l1KXQ1tbWnNzl5eXoM3v
        l3/WW3+XoJegfn+ivc3Nf35+oFt+oJdzc3/Wc36g9pai1vzN7/z+/v7+/v78/v7+/v7+/P78AAAAAAAA
        AOG/vb+/v7+/v7+/zb+/v7/Nv82/v6K/v7+/v7/vv+HWoltzf1Jaohm/NUNDQy5DQzVDQ0N/Un9DUlJD
        Ultaflt+f81/f5d+4aAA79ail7/Nzb9a4e+Xl1KizZdbv6K/f+/+7/b8/vz+/v7+/v7+/v7+/v7+/v7+
        /v4AAAAAAAAA6b+ior+iv7+/v7/Nv82/v82/v7+/v7+/v7+/zfbW4eG/v35bQzVbLpdDNTVDNVJDNTU1
        NVpzfhkuQ1pzoH8uQ1Jb4X9/onOilwDvzX9bl5agoJf29vzWf6CioHO/otaX7/7v9vb+9v7+/v7+/v7+
        /v78/vz+/P78/gAAAAAAAADhzb+/v6K/oqKiv7+/v7/N1s3Nv83Nv82/v83v/vb2783Nv5d/c5dbUjUu
        NRk1f0NSl7+Xl3OgQ1p+v7/qopdzWn+/l6CifqKXAO/Nf3OXc7CXfu/2/NaXotbNfuHqzX/v/vbv/P72
        /P78/v7+/v7+/v78/v7+/P78AAAAAAAAAOnNv7/Nv7+/oqK/v7+/v7/gzeq/v83Nzb+/v83W1uHWzdbW
        4aJzolq/Q1pzNTV+NXOXzaCgWpcuW3/q1vbhl5dbc9aXl81zf36gor+Xl5d+oH+X9vb2zZegf6J+oOrN
        l9b2vdbq/vb+/vz8/vz+/v7+/v7+/v7+/v4AAAAAAAAA6eHW1s2/v7+iv83Nor+/ze/v9s3Nv83Nv83N
        zb+/zb+/1s3v1s1/c9Z/WltSNVtDWn7NoKBSl0Nzfurh9uGgf3/N73+/4X/Nzeqion+Xf35/oH+Xl6B+
        l6KgW3+/9qGg4f7p9vz+/v7+/v7+/v7+/v78/vz+/P78/gAAAAAAAADv6uHNzc3WzdbNzb+/v7/N6fb2
        zc3Nzc3N1s3W1s3Nzc3N1uHWzepb1lKXW1JSc1paUltboFKiQ1Jbv8324aB/c6Dvl7/Nf+F/or+if6K/
        ota/c+rWolui4erqovb+9u/8/vz8/v7+/v7+/v78/v7+/v78/vz+/P78AAAAAAAAAPzv6eHh6tbNv7+/
        v7+/zc3Nzc3NzdbW1tbN1tbN1tbWzdbh1tbW4eHNQ1u/W0NzWkNDWltbW381UlJSUlpac1taWs2Xc39+
        oluioqBbl6CXv3/NzeHqv9ag4erq9v7v7/z+/Pz+/P7+/v7+/v7+/v7+/P78/vz+/P4AAAAAAAAA9urv
        7+nh1tbN1s3Wv7+/v7/NzdbW6uHh4dbh6eHh4eHW1tbh1s3WzeF+UnN+NVI1Q1Jzc3N+c0M1WjWioL9/
        oFug75eg4X+/l7+wv36Xl3+ioL+iv++/6eHN6ur2/O/W/Pz89v78/v7+/v7+/v78/v7+/P78/vz8/gAA
        AAAAAAAAAPb27+/v7+/q4c3Wzc3N1s3Nzc3W4erW9urv4enh1uHh6urWzdbNzdagUnN/oHM1NX6Xv5fh
        f83Nf7/W783qoqL81n/Wf6K/zc329vbWf7+/vc2/zb/v4e/W1u/24enh9vb2/Pz8/P7+/v7+/P7+/v7+
        /v7+/P78AAAAAAAAAAAAAAAAAPz27+/v7+/q4dbW1tbW4enq6eHv6u/p6u/v7+rN4e/q4eHhzdbNfpei
        W6BboM2goNZSv9Z/v7/v6urv4fyX4faXzerv1s3q79ai1r+ioNa/oM326e/N6fzv/Pz2/P78/vz+/v7+
        /v7+/vz+/P78/vz+/P4AAAAAAAAAAAAAAAAAAAAAAPz27+/q6urq6urq6u/p7/b29vbv6u/v7+/29vbh
        6u/N1tbWoH9zW6B/1s2i6n6gv5egoNbN77/h/KDq6r/v7/z8/Pz27+rv6pb2/Pbv7/z2/vz+/vz+/v7+
        /v7+/v7+/v7+/v7+/vz+/P78/vz+/gAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+rq6urq7/b29vb27/b2
        9vb27+r29urq9tbW4dbNonNbc83Wzc32opdbl7+gf6DWoJb27/bq4eH89vb8/Pz8/Pz8/v7+/v7+/vz+
        /v7+/v7+/v7+/P7+/v7+/v7+/v78/vz+/P7+/v78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+rv
        7+/v9vb2/Pbv7/bv6vb2/vz21tbhzdbWzX5zc5d+fpd+1r2Xf71vc5awoe/q9vbvovz29v7+/v7+/v7+
        /v7+/v7+/v7+/v7+/v7+/v7+/v78/v7+/v7+/P78/vz+/P7+/P4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAPb27+rv7+/29vb29vbv4eHv9vbq1uHNzdbN1r+g1qKgl3N+1n6/7+rg6fbq7/b8/Pz2/Pz8
        /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/vz+/P78/v7+/vz+/P78/vz+/vz+/AAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+/v7/b29u/27+/hzeHh6tbW4c3N1qJz4c326env6u/2/Pz2/Pb8
        /Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/vz+/P7+/v7+/vz+/P78/v78/vz+AAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+/27/bv7+/v6tbW6urq4eHh4eHN6v789u/8
        /vz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vz+/P7+/P78/vz+/vz+/P7+
        /gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+/v7+/v7+/v7+/q6urv
        7+rh6v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vz+/v7+/P78
        /v7+/vz+/v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+/v
        7+/v7+/v7+/v6u/q4fz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
        /v7+/v7+/P78/v78/v7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAA/Pb27+/v7+/q7+/q6u/v6er+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vz+
        /v7+/v7+/v7+/vz+/P7+/P78/v78/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+rv7+/q7+/v79b2/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
        /v7+/v7+/vz+/v7+/v78/v7+/vz+/vz+/P7+/P7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+rv7+/v7+rp/v7+/v7+/v7+/v7+/v7+/v7+
        /v7+/v7+/v7+/v7+/v7+/v7+/P7+/P78/vz8/vz+/vz+/vz+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+/v7+/h7/z+/v7+/v7+
        /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/v78/v78/vz8AAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+/v
        4O/8/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/P78/v78/v4AAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAA/Pbv7+Dq/P7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/P4AAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAD+/Pbh6vz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/v7+/v78
        /P7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+9u/2/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
        /vz+/v78/P4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz29vb8/v7+/v7+/v7+/v7+/v7+
        /v7+/v7+/vz8/vz8/P7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/vz29vz8/v7+
        /v7+/v7+/v7+/v7+/v78/Pz8/P4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAD+/vz29vb8/Pz8/Pz8/Pz8/Pz8/Pz+/v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAA/v7+/v7+/vz8/v7+/v7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////wAAAABAAAA///////////8AAAAAQAAAH///////////AAA
        AIAAAAB///////////wAAAAAAAAAf//////////8AAAAAAAAAH///////////wAAAAAAAAB/////////
        //8AAAAAAAAAf///////////AAAAAAAAAH///////////wAAAAAAAAB/////gAAAAAMAAAAAAAAAf///
        /wAAAAAAAAAAAAAAAG////wAAAAAAAAAAAAAAAAP///4AAAAAAAAAAAAAAAAf///8AAAAAAAAAAAAAAA
        AH///+AAAAAAAwAAAAAAAAB////AAAAAAAIAAAAAAAAAf///AAAAAAACAAAAAAAAAH///gAAAAAAAAAA
        AAAAAAB///wAAAAAAAAAAAAAAAAAD//4AAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP/+AAAAAA
        AAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAAAAAAAAD/wA
        AAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAA
        AA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAA
        AAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAA
        AAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AA
        AAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAA
        AA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAA
        AAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAA//4AAAAAAA
        AAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AA
        AAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAA
        D//gAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAA
        AAAAAA//4AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAA//4AAAAAAA
        AAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AA
        AAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAA
        D//gAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAB/+AAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAA
        MAAAAAAP4AAAAAAAAAAAADAAAAAAD+AAAAAAAAAAAAAwAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAA
        AAAACAAAAAAAD+AAAAAAAAAAAAgAAAAAAA/gAAAAAAAAAAAIAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AA
        AAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAA
        AA/4AAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAD//4AAAAAAAAAAAAAAAAAA///wAAAAAAAAAA
        AAAAAAAP///wAAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAP/////wAA
        AAAAAAAAAAAAH//////wAAAAAAAAAAAAAD///////wAAAAAAAAAAAAB////////wAAAAAAAAAAAA////
        /////wAAAAAAAAAAAP/////////wAAAAAAAAAAP//////////wAAAAAAAAAP///////////wAAAAAAAA
        D////////////wAAAAAAAD/////////////gAAAAAAB//////////////AAAAAAD///////////////A
        AAAAB///////////////+AAAAD////////////////8AAAD/////////////////+AAP////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////
</value>
  </data>
</root>
version/STWCSMapEditor/WCS/exit.Designer.cs
New file
@@ -0,0 +1,150 @@
namespace WCS
{
    partial class exit
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(exit));
            this.yes = new DevComponents.DotNetBar.ButtonX();
            this.no = new DevComponents.DotNetBar.ButtonX();
            this.pb = new System.Windows.Forms.PictureBox();
            this.labelX1 = new DevComponents.DotNetBar.LabelX();
            this.textBoxX1 = new DevComponents.DotNetBar.Controls.TextBoxX();
            this.labelX2 = new DevComponents.DotNetBar.LabelX();
            ((System.ComponentModel.ISupportInitialize)(this.pb)).BeginInit();
            this.SuspendLayout();
            //
            // yes
            //
            this.yes.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            this.yes.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
            this.yes.Location = new System.Drawing.Point(104, 176);
            this.yes.Margin = new System.Windows.Forms.Padding(4);
            this.yes.Name = "yes";
            this.yes.Size = new System.Drawing.Size(87, 31);
            this.yes.TabIndex = 2;
            this.yes.Text = "确定";
            this.yes.Click += new System.EventHandler(this.yes_Click);
            //
            // no
            //
            this.no.AccessibleRole = System.Windows.Forms.AccessibleRole.PushButton;
            this.no.ColorTable = DevComponents.DotNetBar.eButtonColor.OrangeWithBackground;
            this.no.Location = new System.Drawing.Point(246, 176);
            this.no.Margin = new System.Windows.Forms.Padding(4);
            this.no.Name = "no";
            this.no.Size = new System.Drawing.Size(87, 31);
            this.no.TabIndex = 3;
            this.no.Text = "取消";
            this.no.Click += new System.EventHandler(this.no_Click);
            //
            // pb
            //
            this.pb.BackgroundImage = global::WCS.Properties.Resources.warn;
            this.pb.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            this.pb.Location = new System.Drawing.Point(13, 19);
            this.pb.Margin = new System.Windows.Forms.Padding(4);
            this.pb.Name = "pb";
            this.pb.Size = new System.Drawing.Size(59, 48);
            this.pb.TabIndex = 0;
            this.pb.TabStop = false;
            //
            // labelX1
            //
            //
            //
            //
            this.labelX1.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX1.Font = new System.Drawing.Font("微软雅黑", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
            this.labelX1.ForeColor = System.Drawing.Color.Red;
            this.labelX1.Location = new System.Drawing.Point(86, 15);
            this.labelX1.Name = "labelX1";
            this.labelX1.Size = new System.Drawing.Size(331, 71);
            this.labelX1.TabIndex = 11;
            this.labelX1.Text = "退出系统自动仓库将无法正常作业,\r\n且可能导致正在入出货物的数据异常,\r\n退出前请确认设备已都处于空闲状态!";
            //
            // textBoxX1
            //
            //
            //
            //
            this.textBoxX1.Border.Class = "TextBoxBorder";
            this.textBoxX1.Border.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.textBoxX1.Location = new System.Drawing.Point(141, 123);
            this.textBoxX1.Name = "textBoxX1";
            this.textBoxX1.PasswordChar = '*';
            this.textBoxX1.Size = new System.Drawing.Size(190, 25);
            this.textBoxX1.TabIndex = 1;
            //
            // labelX2
            //
            //
            //
            //
            this.labelX2.BackgroundStyle.CornerType = DevComponents.DotNetBar.eCornerType.Square;
            this.labelX2.Location = new System.Drawing.Point(60, 124);
            this.labelX2.Name = "labelX2";
            this.labelX2.Size = new System.Drawing.Size(75, 23);
            this.labelX2.TabIndex = 5;
            this.labelX2.Text = "退出密码";
            //
            // exit
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(429, 221);
            this.Controls.Add(this.labelX2);
            this.Controls.Add(this.textBoxX1);
            this.Controls.Add(this.labelX1);
            this.Controls.Add(this.no);
            this.Controls.Add(this.yes);
            this.Controls.Add(this.pb);
            this.DoubleBuffered = true;
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
            this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
            this.Margin = new System.Windows.Forms.Padding(4);
            this.MaximizeBox = false;
            this.MinimizeBox = false;
            this.Name = "exit";
            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
            this.Text = "警告";
            this.Load += new System.EventHandler(this.exit_Load);
            ((System.ComponentModel.ISupportInitialize)(this.pb)).EndInit();
            this.ResumeLayout(false);
        }
        #endregion
        private System.Windows.Forms.PictureBox pb;
        private DevComponents.DotNetBar.ButtonX yes;
        private DevComponents.DotNetBar.ButtonX no;
        private DevComponents.DotNetBar.LabelX labelX1;
        private DevComponents.DotNetBar.Controls.TextBoxX textBoxX1;
        private DevComponents.DotNetBar.LabelX labelX2;
    }
}
version/STWCSMapEditor/WCS/exit.cs
New file
@@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
namespace WCS
{
    public partial class exit : Office2007Form
    {
        #region æ³¨é‡Š
        //public exit(string txt,string title,int type)
        //{
        //    InitializeComponent();
        //    txtarea.Text = txt;
        //    this.Text = title;
        //    //1--问题
        //    if (type == 1)
        //    {
        //        this.pb.BackgroundImage = Image.FromFile(Common.picpath + "question.png");
        //    }
        //    //2--Warn
        //    else if (type == 2)
        //    {
        //        this.pb.BackgroundImage = Image.FromFile(Common.picpath + "warn.png");
        //    }
        //    //3--错误
        //    else
        //    {
        //        this.pb.BackgroundImage = Image.FromFile(Common.picpath + "err.png");
        //    }
        //}
        #endregion
        public exit()
        {
            InitializeComponent();
        }
        private void exit_Load(object sender, EventArgs e)
        {
            Common.sysinfo = false;
            textBoxX1.Focus();
            //no.Focus();
        }
        private void no_Click(object sender, EventArgs e)
        {
            Common.sysinfo = false;
            this.Close();
        }
        private void yes_Click(object sender, EventArgs e)
        {
            if (textBoxX1.Text == "ds1234")
            {
                Common.sysinfo = true;
                this.Close();
            }
            else
            {
                MessageBox.Show("密码错误");
            }
        }
    }
}
version/STWCSMapEditor/WCS/exit.resx
New file
@@ -0,0 +1,451 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!--
    Microsoft ResX Schema
    Version 2.0
    The primary goals of this format is to allow a simple XML format
    that is mostly human readable. The generation and parsing of the
    various data types are done through the TypeConverter classes
    associated with the data types.
    Example:
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
    There are any number of "resheader" rows that contain simple
    name/value pairs.
    Each data row contains a name, and value. The row also contains a
    type or mimetype. Type corresponds to a .NET class that support
    text/value conversion through the TypeConverter architecture.
    Classes that don't support this are serialized and stored with the
    mimetype set.
    The mimetype is used for serialized objects, and tells the
    ResXResourceReader how to depersist the object. This is currently not
    extensible. For a given mimetype the value must be set accordingly:
    Note - application/x-microsoft.net.object.binary.base64 is the format
    that the ResXResourceWriter will generate, however the reader can
    read any of the formats listed below.
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.
    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAEAgIAAAAEACAAoTAAAFgAAACgAAACAAAAAAAEAAAEACAAAAAAAAAAAABIXAAASFwAAAAEAAAAA
        AAAAAAAAAAgIABAQEAB7QhAAjFIQAAgQGAAYGBgAISEYACEhGAA5KRgAEBAhACkhIQBaOSEAjFIhAJxa
        IQAQGCkAGCEpACkpKQBaOSkAezkpAHNCKQBrSikAc1opAIRaKQCUcykAMTExAGNCMQBrSjEAY1IxAIRa
        MQCEYzEAhGsxAJxzMQBaOTkAWko5AGtKOQBzWjkAc2M5AIRjOQCMYzkAjGs5AJxrOQCtczkAMTFCAEIx
        QgBKMUIAQkJCAIxjQgCMa0IAMTFKAEI5SgBKOUoAOUpKAEpKSgBaSkoAe1pKAIRrSgBrc0oAKSFSABgx
        UgApMVIAQjFSACk5UgA5QlIASkJSAGtKUgB7SlIASlJSAHtSUgBrWlIAhFpSAHtjUgBza1IAlGtSAIRz
        UgBze1IAnHtSACk5WgBCOVoAOUpaAFpKWgBKUloAWlpaAEI5YwAxQmMASkJjADlKYwA5UmMASlJjAFpS
        YwBaY2MAa2NjAHNjYwCMa2MAe3NjAIx7YwCle2MAnIxjAKWMYwC1jGMAMSlrAFpSawB7e2sAvaVrAEpC
        cwAxSnMAWkpzAEJScwBKWnMAWlpzAFpjcwBrY3MAe2NzAFprcwBza3MAc3NzAKWEcwAxMXsAWlJ7AGtS
        ewA5WnsASlp7AEpjewBaY3sAe2N7AHN7ewB7e3sAhHt7AJR7ewCUjHsApYx7AK2cewBCQoQAWnuEAL2l
        hAAxOYwAUkqMADFajABKWowAY1qMADljjABSY4wAa2OMAEpzjABac4wAY3OMAHNzjACEc4wAY3uMAHN7
        jACEe4wAjIyMAJyMjAC9pYwAY2OUAHNjlABCc5QAUnOUAFpzlABSe5QAjIyUAJyMlACcnJQAxq2UAMa1
        lABSSpwAa1KcAHNrnAA5c5wAa3ucAGOEnACEhJwAjIScAFqMnABrjJwAnIycAIyUnABjWqUAa2OlAGtr
        pQAxc6UAjHOlAEJ7pQBKe6UAUnulAFJ7pQBjhKUAc4ylAGOUpQCclKUAY5ylAKWlpQC9paUAvbWlAIRz
        rQBCe60AUnutADmMrQBSjK0AWoytAISMrQBalK0Aa5StAIScrQCUnK0ApaWtAL21rQDGta0AxsatANbG
        rQBSjLUAWoy1AFKUtQCEnLUAra21AISEvQBKlL0AY5S9AEqcvQCEnL0AnJy9AGulvQCtrb0AnLW9ALW1
        vQC9vb0Ac2PGAJyMxgA5nMYAUpzGAHOtxgCErcYApbXGAL29xgDGxsYAnJzOAGOtzgCUtc4AhL3OAMbG
        zgAxrdYAUq3WAFqt1gBrrdYAnL3WALXO1gDW1tYAQr3eAHPG3gAxtecASrXnAK3W5wDn3ucAnN7vAO/v
        7wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAJUxfJhYWJTk5S0t/v4Fmfn5mgC4ZLgcHC87qIhkZBwmBAOEWAX0uGQcQBxk/eoWU
        rq6+ytTk9/f65AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAABnhoZMYYGioqCgoLCwl4FvgaK/GVJ+CAcC0O8UExEEA4MA6ikBfjQH
        EBkZV1fK5ufmvMm+5eT3+fnw9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAExefqKBXJeib5eib6uholWgopgZW4EJEgvhAGM3Lg0O
        hvbvTAF+NBA0WxEZeJyMn4WUn63J1OT5+fD0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAokrWq3Nfl0hKSiSW9nNf3NakgDZzoiNF
        OqvvpIB1U19HguF0AX0ZECuiAgI+V015WD+pn5+c1OTk8PQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD80OiyNhtcIjgWFoL8XEzv
        1qSZXDM1RFxkdUekmIeEe1uC0aFRlS4ZVs0QBRkFVsbanLt7e3qcjMXk6AAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ZNFLzdI
        oiUkv+A2SsGi0aReMzZHcz1TRaOYaHt7b5jhzaCVWgEKlRAKVitr5uWc7bu7WD5XeIzfAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AACrd0EmI0XqXUX86xsm1qGkgaFFRX+YGS024ZhAUhk2X/bAoH99DwoZCz+7Vnjm+MftyeadnGs7e9YA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAMJ3QRYMEiQkHEixGhanjmGBRRlcLSI2NjZSIVwZgF5cXEdwXFEKDzEZkdV4kK3JuIyf
        rYzEjKhXvQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAqXdcOEojShUMI6USFppvYqKiNlwzIS0sLVJBUS1zUllFSVlcGRlYkVaq
        lJ+7/fjstsmPjIx4aXqiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACWfn5+fnJaWlpaWlpa
        WlpaQ0BRUS4ZWVrvzeHNc832zX+gvfZ+AADIdkVKRUWDdEqApUc4izYeos5dXC0jERkZQTcxGXNSlYA3
        fFtVlXmVV+euxMr7+PLD2LfY8p96eqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfn5+fn5+
        c1tbW1paW1tbWlpaW1IZQFtSWlos6vzWc1JSUlKX9n/+77NoNkojI0xMJZbiR4HCf0y/4YBzLCE2QDZc
        JkAZNjZQgEpZoLvIqejf25TDkLvdw8Ps0sSceE55sAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        1n5+fn5+fn5zWltbW1tbW1tbWlouUn5bWjURLlJal5dSUlJSWlrh9uq/oJtbSVwkJi8WgNdFX+OAYb/h
        gnNAITMzLW03WS2Yc6FgRUXNqei7vdawlaqUrp6UqpSdbFdNK2x+cytbAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAL9+fn5+fn5+fnNaW1tbW1tbW1tDNXOifkMRGUNSQ0NSWlJSUlIRGaDvor/Nd1w4IhsmIxVf
        pzhJ1l2DouGYXDMhGRktUDdVLZVZlGBdQaL2y7Cwb6Gvu8ze7ubz8/PU2tR4nVEAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAACgc35zfn5zfn5+c1tbW1tbW1paQ1KXoKDWWi5aW1taWlJDQ1IuGVJb4erv/OB3
        cEwiI0lKFmCmOCe1dKRzv5ihWUI2UDNBIzMhXEGVTEZBoZSrbat7rKC3jd7z7Pjy8YzY2FSNsAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAln5+fnNzfn5+fn5zW1tbW1tbWlJ+l5d+c9Zzc1tbW1paWlo1EUNz
        c1taNQAA6ptbMF4kJjcdSaYmMKeC0TXPoqFZNjZALFs3by1zRUUqR4Cw27t55427u9Op7vjZ89PUeI2M
        eo2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH9+c35zUhkuQ1JbfnNaW1taWltboKCXWkN+6vagWlpb
        WlpSGVt/Wlugcy5bAP7gd1AfIiMoJBdfiElMtYPPGb+i9pJBMzIzZUFYLXNIoUxHpKC6u3qpbJW7u8ut
        5rrKrtS41LiMuEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANZ+fn5+fkMZNZd/UgcGLjVSNRkZGRmXcy5S
        Wlt+fnNaW1pSGVqXoH9aGaKXb1oA/r92NhccGigWGEqISUzCpL8Z6s/WrHBQaFVQI042q1ugYF3Pv42N
        TXtXWbvKeubs7MTZ8YnHVlR7lgAAAAAAAAAAAAAAAAAAAAAAAAAAAADNfn5+fn5+fn5+Ui41Li4uERl+
        GREHB79/UhEZWn5+flpaUlJ/l5d/GXOXoM1zUv78oHZBFkgkFyUgSYhMYdfPly7qz6+SQXeLdnZEdllZ
        UFtJgM+9jWtNVj9ZbnpY2eXlna3GeHppiqm9AAAAAAAAAAAAAAAAAAAAAAAAAAAAsH5zfn5+fn5+fn5D
        LlouLkMZfpdaQy5Dzc1zGRkZWnNzWluXl5d+zX9bfnNSNS5D/vV/ajYWIyUYJiA4mkxi1+FeNeHWvWhc
        W6d3klx2dqByc2CYz72fnYyNMVFYe1ic2NRubnp6eMOMp1FyvfYAAAAAAAAAAAAAAAAAAAAAAJZ+fn5+
        fn5+fn5+fkMuoltDQy6XoFpaWjV+c0MZGRkZGS41WpdzQ1LN4aBbUi4ZGS726GZZIxYjJB84OF2zYnTX
        6i42v3xVyN58dlmAXZF3kZSVdJjOsPTK2Z9pa3p6eJ67e3q4ucdUjFRuNTU1UgAAAAAAAAAAAAAAAAAA
        AAB/fn5+fn5+fn5+fn5+zX7v/PaXQ5eifltac39DUlpDWlIZGREu1nNSW1tzNREuGRErUfXNfl9fJSUl
        KEc4c7ODmdfQgTZSZaze3kF2rKBdlnzIzal0mN67u4V6a3lpa5x4e5E80rSMaVeRT1E0LjJSAAAAAAAA
        AAAAAAAAAAAAfn5+fn5+WlIuQ0NDGRlzfnO/739Sl+qXf35+on5bWnOic0NDQ1rWoltSLhkHES4uQ0NQ
        zZegoqKiooFKSEtzp6K/1+qBLjY2cOpvW6zc4HCTk82i3oKiu1hRcXNXelZYeFRYbQ+cuFQxGVh7GTUu
        GRkAAAAAAAAAAAAAAAAAAH5+fn5+fn4uAQEAAAAABzWioL/Non+/6pd/cxFDf7+XW79+WlIuBxFDGQcH
        EREHGS4ZGS5YUlFSUlI2NVJbUllZLlpvfjUZLi4ZGTNSb3N+WzWgf1tZRVtRQECVsG5ZUVFYUVFRQ1hX
        UTVAQDMZBwcZWgAAAAAAAAAAAAAAALB+c35+fnNbLgIAAQAAAAJDW83W6vy/W5fhl39zGRk1QzVaf7+/
        fxkGBgcGETURERERNXNAGRkZEQYRGRlAUlFSGREZNX5cGRkCBhkuNC5SLr9/Nb+gGW+XLi4sAVJ+WTVA
        NTUuLi4uNS41LhkKBxlDUlJyAAAAAAAAAAAAAACXfn5+fn5+UjV/EQYCGTUZNUOif3/NzUMRf+qgf39S
        Q0NaQ0MZLkMZBwcHBwcuQ1JDLhFbl1EHERkZBhFSUlI2W39SBhkZGRkRLi4uLhkZEREZor0ZBwYZoL1b
        MlIGNDU1NSwZCxEZNTUZBwcZQFJaUlJDQ1kAAAAAAAAAAAAAf35+fn5zczVSv+FSNS5bGQYRf3M1GQcC
        GRl/6pd+fhkuQ1JzWhkHBwcRERkuLkNbWlJSNTU1NREZBwcHEVpSLhlDf1IRGRkZQ1JSQy4RERkZEQcG
        BhEZNVpbc0OXolo1GQcRNRkZBwYHBy5DWltbWlvWfi4yUgAAAAAAAAAA4H9+fn5+flo1c9b29nOgNRkR
        WqC/f39zAQIZLqDv7+GXGRk1GRkRBwcRGRkZGS41LlJzQy41UlJSNTUZGQcHfn4uGRkZERlDQ1JSQzWg
        cxkZGRkZERkuLjUuLi4ZGVKXLhEuQ1taERkuLlJaWlt/QzU1WuGgNTVZAAAAAAAAANZ+fn5+fltSGaCg
        9vz2c6A1GaC/f0OXl5cCBy5bfqDN1lI1NRkRBwcRGRkZGRkZLhkZEQcHGVp+WzU1WlpSBgY1UhkRERER
        LlpSNS4ZGX5/GREZGUM1NRlafy4RBgYCBxlDWltaNb9/NRlDUlI1c+p+NTU1UkM1NVIAAAAAAAAAon5+
        fn5+GQaXUgb2/vZ+l1LNzX6X76KXf0MZNVtaf82iQxkREQcHGRkZGRkZGS4ZEQcHERkuGS41NVpaWkMG
        BgcuQxkRGRE1f0MZGRkZERlDQ1JDNRkZGVuXNQcGBxk1LlI1oKIuoqIZon4uLgJSf1s1NTU1NTU1UgAA
        AAAAAACifn5+UjVSlxk1oPb89nOgNRlaf832opd+AAJzoKB/onM1ERkREREZGRkZLi4ZEQcRGRkZLhkZ
        Li5DWnN+WhkZB1tSWlo1NS6XUgcRERE1UlI1NXN+GRERES4uUi41GRkRERFSoBkZUnPqoFt+GTUuGS4Z
        BwYZGRkZAAAAAAAAAKJ+c1ouv3MRGaBz9vz2fqJbUlqXze9/l38GB39+v6LWWkMZGRERERkZGS4ZGQcH
        GRkZGRkZGS4ZES5aW39aGS41UnN+WkNDUlJDGREHERl/WhkRLloZLjVDWjVaWhkZGREGBgcuQ0NSQ0Mu
        l81DBxEZQxkZGREZQ28AAAAAAAAAonM1c7/2fn81f7/v/O/N70MZW6DN1tbNoBERUkO/fnPWQxkZLjUZ
        GRkZGREREREZGS4uGRkZEQcZLlpzf1oZLjURERkZUlpaWkNaUhkHEXNbBxERGVtDQy4uGXOXNRkuLkMu
        LkNzGREHBgIRUlpaWlpzcxkZWlpSbwAAAAAAAACXNX6i/P5+okOg1nPN7y5DGRlaoHPNoC4RGS4RQ39z
        WkMGBwcHES5DUjU1LhkRERkZUnN+GQcRGRlDWnN/Wi4ZERERGS41Q0NDc3NSLi4ZNTUREQcRW1oRERkZ
        LjVaQ1pDLhkZW6A1BgcRGUNSWlvWNaDWWn9DNRFSAAAAAAAAAH+/WkP+/n6XQ9bqoqB/l39SGVt/oDUH
        BhEHGRkuWltDQxkHBxEZGRkRQ1IZQ1pzW1tSc38uEREZGUNbW3NDERkZGRkZGRkuLhERLi4ZNTVSUlJD
        NRl/WwcHERlbLkMuWpcZERkZNS4ZGRkZGQcGGeFaUpeg9nOXGTUAAAAAAAAAzS5azf7+f6Ja9tZSoJdD
        GQcGES5DWn41GQcRGRlaWltDGRkZEREuNTVaQxFSl6CXon5/fi4ZGRkZGRk1GRkuGRkZGRkZGRkZGRk1
        Q1JaQ0NbQ0NDWlJDLhkHEXNbBwcZUjUuNTU1Q781BwcREREZQ0NaWjUuWu9aWgAAAAAAAABzl1pD/v6X
        1s1+Un6gfxkRERkZGVpDLhkZERkRUlo1czUZBxEHGXNDQ3NSGVqion5/c5egQy4uNTUuGRkRGRkuQ1pa
        NUNDflIuLjVzf35SBwcZWlJSW1pSEQYHW1IHBwcZQ0MuLhkZv1oZLi4ZLhnWUgYHGS41fnOwAAAAAAAA
        AL9DB1r27+nWf/aiWlt+f38ZQ5dDUkNDEREBEVt/WjV+QxkHBwYRfkNSl1oZWr+/fn9SW5dDNRkZNRkZ
        LhkuLi5bc39bc1p/WhkZGXO/f1IHBwcREREZNRkHBi5DQ0MuEUOXLgcRGS4uQxlbQwYZGaJzNVJDLi4Z
        Q/wAAAAAAAAAWhlbc1u/W71aW3Nzl3Muc1suLjVSUn4uGRkZf1tbGXM1EREZUjVSGRkZNRFazaJzl0Mu
        LjU1UltbGRkZNS4uLnNzfn5+W5daEQcHW79/UgcHBxERERkuLhkRNVpSUkNSWlIuGRkuWxkZGXNac1ta
        Q6BSEREZGTVSfgAAAAAAAAB+fjWiWluXc35+LjUZGRk1GREuNVtSfhkZGRlDLlsZLhkZGVouGVI1Q1Iu
        GVKXl1tSGREZWlpSc3MZGRkZEQcRl5egf1taoFIHBxFafn5aBxEZLjU1Li4uNS4ZNTVaUlJaUkMRLlJz
        GRkZc1JDNRkZv5dSWlJDLn/NAAAAAAAAAH+Xl0OXcy5Sc341GS5+GRERGS5SQy4ZGRkZLhEZWxFbNRku
        W0MuQxkZLhkZGTU1LhkRBxFSc1p/fxkZERkZLi5+c35/LlqgLhERERlDUkM1NTUuLhkZNTVDNS4uLjUu
        WqKXUhF+flJbNRnWQwcRUlpbW1uiLkM1c7AAAAAAAAAAzVKXfjURGVJ+fn9/oENbvy4uLlJaB1IREREZ
        ERlbEVIZLhlSGRk1GRkuLi4ZGS4ZLhkZNUNbQxkZGRkZGRkGAgcZUn4ZUqIuAhEZNTU1LhkZNUM1LjU1
        NS4uLi4uNUN+4b9aGVpbW35aUlouBxF+lwcRWn5bc1Iu1gAAAAAAAACifjUZEX4uUn6i1louGS4ZGVKX
        flKXNTUZGREZGVsRLhkZGXNbLjUZGS4ZLhkZGS4ZGRkuGVJDQ0MuGQcHBwICBgdaWxEuWhkuGRERLkM1
        Q1I1LhkZQ1pbLhkuNTU1Ln7hv1o1NS41NUNaQxlac1paEQeXQxEZQzWhAAAAAAAAAH4ZBlpaNVuX6vb8
        c6BDGVJboEMZLhkZGRlSGRFDWxE1NRkZWlIZQxkZLhkZGRkZGRkZGS4uQy4uGREZGS41NRkZGVpaLkNa
        GRkRNVtzc5dDLlJSUkNbopdSLi4uGRkuc7+gWy4uLi4uNTUuGVpbUlJDW3MZBxmiNS4AAAAAAAAAQzVb
        GX+Xl1LN/P5boFuX6n5zl3MZGTUuGUMZGVtaGRkZLi4ZQxk1GREZGRkZGRkuLhkuGTUZGTUZNTUZNS4u
        LlJSWlo1NVo1NTVbc3OX4VtSQzU1Q3/hv35SQy4ZLi5DWkNDLi41Li4uLi4uNTU1Q1tbUi5SQ34ZGQAA
        AAAAAACiNX6XlzVSoun+/H5/Whlbfr+gfkMZGRkuQ0Nac1oRNTUZLjUZLkM1LhkZGREZLhkZEQcZNTU1
        NRkuGRk1Li41c35bWnNzWjVDW5egf37qc1JaW1tbv9ai1nNSW3NzfloZNTUuGRkuLjU1NVJSLjVDQ1JS
        Q1pSUkN+AAAAAAAAAKKi1s1+cxlR1vz8c6JaGXN+v6BbLi4ZGS5+WnNaWxlDNS4ZLi4ZQxkRLhkuGRku
        LhkRGRk1NS41LjUuLjUuNTV+oFtac3NDNVJDc5d+c9ZDWlpDWlugfn/qf1J/6u/2oFtaQ0MuNTUuGS5z
        4aBSNS41otZaNUN+Wn4AAAAAAAAAv3/+4aCgUlLN/Px+v34ZW36/oH4ZGS4ZNX5zflJbERkZNRk1GRk1
        GRkZLlIZGTUZLi4uLjVDQxk1QxkZNS4ZLn+iolpzc1JDQ1p+f35zoJe/oFJ+f1JaWup+c3/v9vagW3Na
        f5egv1JDQ37hoFI1NTXh6nNaf6CgzQAAAAAAAACiv/7hoqBSWqLq9uH2l0N/W6Cgf0MZGRk1fnNzUlsZ
        QzUZGUMZGUMZGVJzoFJbLhkZGS41GVI1Q0M1Li5DUhlDc6KiW3NzQ1pbW35zW1vq9vzhf1p+c1pSv1pa
        W+/v9qBbc1rh9vb2f+DhzeqwWlt/l+rqfqCioqK/AAAAAAAAAFp//uGioHNzUr/hf3NzWlpbf6K/f38u
        Qxk1NXNSWwdDGRkZNRkuQy4ZNX6iWnMuLhkuNS41NUMZWlpbc6B/c1I1LlJaNUNSQ1t/l39zW/b8/NZ/
        l79/Wltbf35zoJdSUlq/l+/29vaW/PzW4b+gzb+izc2XoKKior8AAAAAAAAAor/+4b/NW7+if35+NTUZ
        GTVzNVJaUhkuGXNbUlJbGS4ZNRkZLi5SGRlbl6Bbc0M1GRkuQzVDQy41NaCi1qCXWkMuWlvNl1J/W1uX
        flpb9vz+1n9+fnNSW3N/W1tzoFtzc5daoOHqzaL8/L324db29u/v6qCgoKKizQAAAAAAAACil6K/9tZ+
        flJ/f1tzUhF/LhkuGTUZGRkZLhkZUlsZQzVSQ1suLjUZGVpbc1JzNRkZNVpaQ0M1Li41oKDhoJdaWlp+
        W+qiQ35ac35zWlK/zc1/flqXf1Jzc6B+W1ugW1pb1nOgl5d+funNovbW1vb29gAAAAAAAAAAAAAAAAAA
        AHNboHN/c1J+c1taNRlDGUMuLi5bWi4ZGRkZGRk1Wxk1GX9SUjUZQy4ZLi41NVI1LhlSW1tDQzUuNUOi
        v+qgl1s1Wltb4aBal1JzUn5zfn+wsLBzfr9aWlJzfnNbfn5zWnPWf6Kgl5d+zaCgvdbW9vb2AAAAAAAA
        AAAAAAAAAAAAzVt/Wi5DNZd+W0MuLjURGS4uGS4uNS4ZERkZGS5bEVIuLhk1GRlDGRk1Li4ZGTUuLjVS
        UjVDQxkuNX+XonOXWkNbc1ugfkN+oKKgoJeXW1ugW3Ohv9aXW35aUkNzflpDfr9/oH+if1vhoNbq6u/2
        9vYAAAAAAAAAAAAAAAAAAACiUjVDc5d+l35+QxkRNREZLi4ZNRkZGRkRNRkZGVsZUjUuGUMuGVIuQxku
        LhkuLi41UlpaGVJDLjU1LkNSUjU1NUN/W35+W3Nzon+XfnNzWn5zc/z29r9+Wn5zc3OXWlpav1vNf82X
        W++/zerq7/b29gAAAAAAAAAAAAAAAAAAAKBal0N/QzV/WkMuLlt/GRkZGREZGVouGRkuGRkuWxE1GS4u
        Qy41Wi41Lhk1GRlDNRkZNS41Q0MuNUNDNVI1WlJaUnNbNVJDUpfv1n9+W1tafltz/O/2opd+v6J/c5db
        c36gf35/oHNa6qLN6urv9vb2AAAAAAAAAAAAAAAAAAAAzUNzGS5DLluXv7+il1tzWjVafn9/WxEZERER
        GS5bEVsuGS4uNRlSGS4ZGS4ZGTUZGRk1UkNSQy41NS41Q35/fltSf3Nzf1pzl/7qf35bW1t/WnP86uqg
        l3PW1n9+c3NzouHNf6Cgl37NoKDN1tb+/PwAAAAAAAAAAAAAAAAAAAB+LjUZLnOw6aBSNUNDQ35/Un5/
        NUMuGRkZNRk1LlsZWzUuGRkuLlIZLi4ZLhkuLi4ZGTVaQ1JDNTVDLkNDv+G/fn5+c1pzQ1p//Om9oKBz
        ouG/b6K/UlpbftbNf35+c1rq/Pai6uq/fvZ/1urq7/b29gAAAAAAAAAAAAAAAAAAAH5Df6C/fvb8l6B+
        Nc1zf341ERkRGRkuGRkuGTUuWxlSGS4uLhkuQy4uLhkZGRlDGRkRQ381W1I1NUM1Q1LN1qJ+fpdzf35b
        l7/h4fz29nNzf35+W39+W3N/fltac39SWtb876L26s1//JfW6urv9vb2AAAAAAAAAAAAAAAAAAAA76Ja
        NVpz/P6goH8ZczV+oFouLjU1NUNDUpcZGTVbGXM1Qy41NRlDGRkuGTUZLkM1LhkuNTVaQxkZNRlDWs3W
        v3OXzXNaflJzl6Dg/vz2f1t/fn9afn5bc1tzW3Nzf3NzoKJbf9bWl378l9bq6u/89vYAAAAAAAAAAAAA
        AAAAAAD+zaJ/l7/+/qCgcxlaWs2iWzUZLhlDWlJaoi4ZLlsZWy41GTU1Lls1WkM1LhkuNS4uLkM1LlpD
        NTVSQ0NbWjVSQ3PWc1JbWltac83+/PZ/Wlt+l3N+l1p+fn9+W36Xc1t/v36Xl5egfs2XoM3q1v789gAA
        AAAAAAAAAAAAAAAAAP7Won9Dc/7+oKJ+GVpazaJbWhkuGUNaWlugGRk1WxlaGRk1NS4uc1JbQ0MuGRlD
        NRkZUkNDUlo1f5dbQ0NDWlpbf79zW3NSWlpzzfb24ZZbc3Nzc5eXWpdzc35ac35zWn7hl7+gzaB+6r3h
        6u/v9vb2AAAAAAAAAAAAAAAAAAAA/taifjW//v6i1pcZUluil1pSGS4ZWn5+WqIZGTVbGVo1WhlDLi5b
        W1taNS4ZQ1pSGS41UlJSWi6Xon5aNVp+UpfW6n5zflp+c5egoqKioKK/zX6gzVpaWn9zWlJzc35DoPa/
        4aLWon7v1uHq7+/29vYAAAAAAAAAAAAAAAAAAAD+1qJ/GZfhoKKioL+if39bWlIuLhk1NUMuUhkZNVtD
        Wy5aNUM1Q1pbczU1Lhlafls1LkN+UjVSQ7+gflJDW39aWn6gc36XWr/N1qCXfn5/oNaiv1tzfnN+fn5a
        W3OgWltz6nOioM2gc+/N1urv7/z29gAAAAAAAAAAAAAAAAAAAL9zoJd/v+qgl6BzUjVDNTU1QzUZGTUu
        Li5DNVJDW1pzNS4ZGTVDWzU1Qy4ZGVuXWjUZLqBSQ1o1oKJ/W3Oic5dbf6BzW39Sv39+fn5zc37N/OHq
        fn+gc6J+c3Nbfpdzc36/fpeioH5+zaCg1urh/vb2AAAAAAAAAAAAAAAAAAAA6aKic35aW5c1WkMZGUMZ
        GS4RNUM1NS4uLjUZNUNbQ35SQ0NDNS5aLkMZLi4uLlIuGRkZLkNaWi5SUjVDQ1tbQ1JzfnNzc1vvoH9z
        c1u/ftb84eF+oNZz4X9zflt+f5dSf++/l6C/l37vv83v6u/29vYAAAAAAAAAAAAAAAAAAACgNUM1Li5D
        ly5+Qy4uLhkZGRkZGRkuLhkZUi4uWltDWxkuLjU1LnMuWi4uLi4uNTUuNUM1NUNaGTVDQzVSUkNDNS5/
        c1JaQ+Cgl1tzfs1+1vbWv5fNzVvWf5d/Un6goFKi/uqiotagf/bNzfbq7/z89gAAAAAAAAAAAAAAAAAA
        AH8uNRk1LlJ/LlJDGRlDERkZGRkuGRkZGRE1GS5aW0N+NS4ZWi4ufy5aGRkuGRk1NS4ZQ0NaQ1s1UlJb
        c3Nbf1pzfr9+f39v6aK9l5eizZeiv79zoM1bW1uXf1pDfpdzUpf+4aK/1qJ/9r/N9urq9vb2AAAAAAAA
        AAAAAAAAAAAAABk1Lhk1Ln4ufloZGTURERkZGTUZGRkZETUuGXNbQ341LjVaNUN+LloZGTUZGVIZGTV+
        f1pSWy5aW39+f3+/v35+4X5+oFLp9vyic1tzf3Nzc35bc39ac35zfnN+l1tzfr9bf5e/c3PpsLDN6s32
        9vYAAAAAAAAAAAAAAAAAAAAAGS4ZLi4ucy5+QxkZNREZGRkuLhkuGS4RUjUufltDWxkuNVtSQ341Wy4u
        UhkZcxk1Q5eXW1JbQzVbf39/f+Hqfn9/fnN+W/z+/r+XWlt+W3N+f36XolqXf39/W35/W1t+75fNos2i
        f+/Nze/q6vb29gAAAAAAAAAAAAAAAAAAAH8ZGRkuQ0OXW6CXl5dzBxFDLlJSUhkHGQdSLkNzW1J/NVI1
        WlJDfjVzGS41GRlDGTU1oKBzNVs1NVp/f39+1up+l6J+c35S9v7+v39bWn+XW3+XoL/NWqJ/on9bf5dy
        Wn/+ouG/1r+X9urh9u/v9vb8AAAAAAAAAAAAAAAAAAAA4ZegouHNoJdbf3Pq76J/fkOXl6B+oEM1LkM1
        fqBzfnM1QzVDWlp+Q0NDNS5DW3M1GS5DNVJSWhkuQzVDUlp/olpSv35bW1vv1taXl1tSfn9bl6Cior9S
        on+if1qXoHJSfvyi1s3WzZb26eH27+r29v4AAAAAAAAAAAAAAAAAAACXLkOg/uGgoEN+c/78zZeXGXPq
        4X9/fjUZczVboHN+fi41Q3N+Wn8ZfxkuNVqgl3OXLkNzW1t/LlJSQ1Jafn5+c37Nfn+XWqKgoqK/v6K/
        oqKiWn6XW1pal35bWpaiUltz73Oil9aXc/bhzer24Pz8/gAAAAAAAAAAAAAAAAAAAJcZLqD+4aCgUn5+
        /v7NoKARfr/ql3+XWhmiLr+/fqB/NVJSl79zlzV/GTVzl+rWf6IZUqBzl6I1NVI1Wltzf1Jzc6J/v81z
        l1pzW5fW739+W6LNv6CXWqB/oqB+9vbvoVv8c+/v9vag9vbWzfz2/vz+AAAAAAAAAAAAAAAAAAAAvxEy
        ov7hoqBzfn7+/M2glxFzoM1/f1taWr9Dv79+oH4ZNVq/1n6XQ34ZNX6i4dZ/oBkuzXOgoi5aQy5ac3N/
        W39/1n/N1lvNWnNbl+H2f35zv+HWv6BazZfNoJf2/Pa/c/5z/Pb89s38/Onh/OH+/v4AAAAAAAAAAAAA
        AAAAAACiES5/9s2golp+f+/vsKCgGXOioqB/fi5z1jW/v36gly41W7/Wfpc1ly41fr/h6n+iGTXNc6C/
        Q1o1NVtbW5dbf5fhf83WW9ZbfnOX4e9/f37N1ta/l1rNl82gfvb89qJz/nP2/Pb8ovz86db84f7+/v4A
        AAAAAAAAAAAAAAAAAJcRLlJ/W7+/fn9bl39bc1sRWn9/Q1pbGRlbLn7Nc3+XNVJSl39boC6XNS5SQ3N/
        UnMZUqJ+Wn9DUkNDUlJbl1p+f81+f6Bzv1t+fn9+fn+Xfpegor+/UqKXon9boM2gfn/+v+Hq6uDN6fbv
        9v72/v7+/P7+AAAAAAAAAAAAAAAAfzVDNUM1f5d+c0M1LhkZLhk1QzU1QzU1NTU1Q6JbfpdDLi5DUlJ/
        GUMZGRk1Ulo1GS41NXNbfxk1UhlSfn9SW1pS1n9af1t+l82iv5eX1uDW1kOgzX9ac5eiW1qXv1paoPyi
        4er2ze/8/Pb8/v7+/v7+/v7+AAAAAAAAAAAAAACiUkNSc1tzUkM1f1JDNRkZc1paUjVSNVIuWlJ/zVt+
        lzVDLpdaWqA1oC4uQy4ZWxkuETWifkN/Q39+Qy5SUpdboqLhf36/c5dzoH6gW1r2AAD2f6K/1lqil6CX
        c5eif1ui/uH29vzh/Pb8/P7+/v7+/v7+/v7+/v7+AAAAAAAAAOGioqK/v7+ioqC/opeXf36Xc3NbWlta
        UjVzWluiUn6XQ1ouoENaojWgGS5DLhlbGTURQ6J/Q5c1l5dDQ3Nal1q/4fZ/f81bfnOif5dbUvYAAPaX
        oM3NUpeXzZdbl6J+Wr/+1u/89un8/Pz8/P7+/v7+/v7+/v7+/v4AAAAAAAAA4KKioqK/zb+/v7/Nv7+/
        v82/v7+iv7+/os2/v9agonNbW1Kgc1uiNaIuNVoZGXMuLhlzl39Sl1KgflJaWnOXUqLh739+v36gW5d/
        oFpa9gAA9pegor9af6CgoHOXopdzzf7h7/b24fz8/Pz+/P78/P7+/vz+/P78/gAAAAAAAADgvb2ior+/
        v7+/v7+/v7+i1r/Nv7+/v7+izb+/6s3hv1Jac6BSW6A1vy4uUi4ZWy4uGVK/l1KXQ1tbWnNzl5eXoM3v
        l3/WW3+XoJegfn+ivc3Nf35+oFt+oJdzc3/Wc36g9pai1vzN7/z+/v7+/v78/v7+/v7+/P78AAAAAAAA
        AOG/vb+/v7+/v7+/zb+/v7/Nv82/v6K/v7+/v7/vv+HWoltzf1Jaohm/NUNDQy5DQzVDQ0N/Un9DUlJD
        Ultaflt+f81/f5d+4aAA79ail7/Nzb9a4e+Xl1KizZdbv6K/f+/+7/b8/vz+/v7+/v7+/v7+/v7+/v7+
        /v4AAAAAAAAA6b+ior+iv7+/v7/Nv82/v82/v7+/v7+/v7+/zfbW4eG/v35bQzVbLpdDNTVDNVJDNTU1
        NVpzfhkuQ1pzoH8uQ1Jb4X9/onOilwDvzX9bl5agoJf29vzWf6CioHO/otaX7/7v9vb+9v7+/v7+/v7+
        /v78/vz+/P78/gAAAAAAAADhzb+/v6K/oqKiv7+/v7/N1s3Nv83Nv82/v83v/vb2783Nv5d/c5dbUjUu
        NRk1f0NSl7+Xl3OgQ1p+v7/qopdzWn+/l6CifqKXAO/Nf3OXc7CXfu/2/NaXotbNfuHqzX/v/vbv/P72
        /P78/v7+/v7+/v78/v7+/P78AAAAAAAAAOnNv7/Nv7+/oqK/v7+/v7/gzeq/v83Nzb+/v83W1uHWzdbW
        4aJzolq/Q1pzNTV+NXOXzaCgWpcuW3/q1vbhl5dbc9aXl81zf36gor+Xl5d+oH+X9vb2zZegf6J+oOrN
        l9b2vdbq/vb+/vz8/vz+/v7+/v7+/v7+/v4AAAAAAAAA6eHW1s2/v7+iv83Nor+/ze/v9s3Nv83Nv83N
        zb+/zb+/1s3v1s1/c9Z/WltSNVtDWn7NoKBSl0Nzfurh9uGgf3/N73+/4X/Nzeqion+Xf35/oH+Xl6B+
        l6KgW3+/9qGg4f7p9vz+/v7+/v7+/v7+/v78/vz+/P78/gAAAAAAAADv6uHNzc3WzdbNzb+/v7/N6fb2
        zc3Nzc3N1s3W1s3Nzc3N1uHWzepb1lKXW1JSc1paUltboFKiQ1Jbv8324aB/c6Dvl7/Nf+F/or+if6K/
        ota/c+rWolui4erqovb+9u/8/vz8/v7+/v7+/v78/v7+/v78/vz+/P78AAAAAAAAAPzv6eHh6tbNv7+/
        v7+/zc3Nzc3NzdbW1tbN1tbN1tbWzdbh1tbW4eHNQ1u/W0NzWkNDWltbW381UlJSUlpac1taWs2Xc39+
        oluioqBbl6CXv3/NzeHqv9ag4erq9v7v7/z+/Pz+/P7+/v7+/v7+/v7+/P78/vz+/P4AAAAAAAAA9urv
        7+nh1tbN1s3Wv7+/v7/NzdbW6uHh4dbh6eHh4eHW1tbh1s3WzeF+UnN+NVI1Q1Jzc3N+c0M1WjWioL9/
        oFug75eg4X+/l7+wv36Xl3+ioL+iv++/6eHN6ur2/O/W/Pz89v78/v7+/v7+/v78/v7+/P78/vz8/gAA
        AAAAAAAAAPb27+/v7+/q4c3Wzc3N1s3Nzc3W4erW9urv4enh1uHh6urWzdbNzdagUnN/oHM1NX6Xv5fh
        f83Nf7/W783qoqL81n/Wf6K/zc329vbWf7+/vc2/zb/v4e/W1u/24enh9vb2/Pz8/P7+/v7+/P7+/v7+
        /v7+/P78AAAAAAAAAAAAAAAAAPz27+/v7+/q4dbW1tbW4enq6eHv6u/p6u/v7+rN4e/q4eHhzdbNfpei
        W6BboM2goNZSv9Z/v7/v6urv4fyX4faXzerv1s3q79ai1r+ioNa/oM326e/N6fzv/Pz2/P78/vz+/v7+
        /v7+/vz+/P78/vz+/P4AAAAAAAAAAAAAAAAAAAAAAPz27+/q6urq6urq6u/p7/b29vbv6u/v7+/29vbh
        6u/N1tbWoH9zW6B/1s2i6n6gv5egoNbN77/h/KDq6r/v7/z8/Pz27+rv6pb2/Pbv7/z2/vz+/vz+/v7+
        /v7+/v7+/v7+/v7+/vz+/P78/vz+/gAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+rq6urq7/b29vb27/b2
        9vb27+r29urq9tbW4dbNonNbc83Wzc32opdbl7+gf6DWoJb27/bq4eH89vb8/Pz8/Pz8/v7+/v7+/vz+
        /v7+/v7+/v7+/P7+/v7+/v7+/v78/vz+/P7+/v78AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+rv
        7+/v9vb2/Pbv7/bv6vb2/vz21tbhzdbWzX5zc5d+fpd+1r2Xf71vc5awoe/q9vbvovz29v7+/v7+/v7+
        /v7+/v7+/v7+/v7+/v7+/v7+/v78/v7+/v7+/P78/vz+/P7+/P4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAPb27+rv7+/29vb29vbv4eHv9vbq1uHNzdbN1r+g1qKgl3N+1n6/7+rg6fbq7/b8/Pz2/Pz8
        /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/vz+/P78/v7+/vz+/P78/vz+/vz+/AAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+/v7/b29u/27+/hzeHh6tbW4c3N1qJz4c326env6u/2/Pz2/Pb8
        /Pz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/vz+/P7+/v7+/vz+/P78/v78/vz+AAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+/27/bv7+/v6tbW6urq4eHh4eHN6v789u/8
        /vz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vz+/P7+/P78/vz+/vz+/P7+
        /gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+/v7+/v7+/v7+/q6urv
        7+rh6v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vz+/v7+/P78
        /v7+/vz+/v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+/v
        7+/v7+/v7+/v6u/q4fz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
        /v7+/v7+/P78/v78/v7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAA/Pb27+/v7+/q7+/q6u/v6er+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/vz+
        /v7+/v7+/v7+/vz+/P7+/P78/v78/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+rv7+/q7+/v79b2/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
        /v7+/v7+/vz+/v7+/v78/v7+/vz+/vz+/P7+/P7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+rv7+/v7+rp/v7+/v7+/v7+/v7+/v7+/v7+
        /v7+/v7+/v7+/v7+/v7+/v7+/P7+/P78/vz8/vz+/vz+/vz+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pbv7+/v7+/h7/z+/v7+/v7+
        /v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/v78/v78/vz8AAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/Pb27+/v
        4O/8/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/P78/v78/v4AAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAA/Pbv7+Dq/P7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/P4AAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAD+/Pbh6vz+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v78/v7+/v78
        /P7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7+9u/2/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
        /vz+/v78/P4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz29vb8/v7+/v7+/v7+/v7+/v7+
        /v7+/v7+/vz8/vz8/P7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/vz29vz8/v7+
        /v7+/v7+/v7+/v7+/v78/Pz8/P4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAD+/vz29vb8/Pz8/Pz8/Pz8/Pz8/Pz+/v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAA/v7+/v7+/vz8/v7+/v7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAP//////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        //////////////////////////////////wAAAABAAAA///////////8AAAAAQAAAH///////////AAA
        AIAAAAB///////////wAAAAAAAAAf//////////8AAAAAAAAAH///////////wAAAAAAAAB/////////
        //8AAAAAAAAAf///////////AAAAAAAAAH///////////wAAAAAAAAB/////gAAAAAMAAAAAAAAAf///
        /wAAAAAAAAAAAAAAAG////wAAAAAAAAAAAAAAAAP///4AAAAAAAAAAAAAAAAf///8AAAAAAAAAAAAAAA
        AH///+AAAAAAAwAAAAAAAAB////AAAAAAAIAAAAAAAAAf///AAAAAAACAAAAAAAAAH///gAAAAAAAAAA
        AAAAAAB///wAAAAAAAAAAAAAAAAAD//4AAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP/+AAAAAA
        AAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAA//AAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAAAAAAAAD/wA
        AAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAA
        AA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAA
        AAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAA
        AAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AA
        AAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAA
        AA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAA
        AAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAA//4AAAAAAA
        AAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AA
        AAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAA
        D//gAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAA
        AAAAAA//4AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAA//4AAAAAAA
        AAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AA
        AAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAA//4AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAA
        D//gAAAAAAAAAAAAAAAAAAf/4AAAAAAAAAAAAAAAAAAB/+AAAAAAAAAAAAAAAAAAAP/gAAAAAAAAAAAA
        MAAAAAAP4AAAAAAAAAAAADAAAAAAD+AAAAAAAAAAAAAwAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAA
        AAAACAAAAAAAD+AAAAAAAAAAAAgAAAAAAA/gAAAAAAAAAAAIAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AA
        AAAAAAAAAAAAAAAAAA/gAAAAAAAAAAAAAAAAAAAP4AAAAAAAAAAAAAAAAAAAD+AAAAAAAAAAAAAAAAAA
        AA/4AAAAAAAAAAAAAAAAAAAP/4AAAAAAAAAAAAAAAAAAD//4AAAAAAAAAAAAAAAAAA///wAAAAAAAAAA
        AAAAAAAP///wAAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAP/////wAA
        AAAAAAAAAAAAH//////wAAAAAAAAAAAAAD///////wAAAAAAAAAAAAB////////wAAAAAAAAAAAA////
        /////wAAAAAAAAAAAP/////////wAAAAAAAAAAP//////////wAAAAAAAAAP///////////wAAAAAAAA
        D////////////wAAAAAAAD/////////////gAAAAAAB//////////////AAAAAAD///////////////A
        AAAAB///////////////+AAAAD////////////////8AAAD/////////////////+AAP////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////
        ////////////////////////
</value>
  </data>
</root>
version/STWCSMapEditor/WCS/obj/Debug/DesignTimeResolveAssemblyReferences.cache
Binary files differ
version/STWCSMapEditor/WCS/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
Binary files differ
version/STWCSMapEditor/WCS/obj/Debug/ResolveAssemblyReference.cache
Binary files differ
version/STWCSMapEditor/WCS/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
Binary files differ
version/STWCSMapEditor/WCS/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
version/STWCSMapEditor/WCS/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
version/STWCSMapEditor/WCS/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
version/STWCSMapEditor/WCS/obj/Debug/WCS.Form2.resources
Binary files differ
version/STWCSMapEditor/WCS/obj/Debug/WCS.Form3.resources
Binary files differ
version/STWCSMapEditor/WCS/obj/Debug/WCS.Form4.resources
Binary files differ
version/STWCSMapEditor/WCS/obj/Debug/WCS.Properties.Resources.resources
Binary files differ
version/STWCSMapEditor/WCS/obj/Debug/WCS.crndisplay.resources
Binary files differ
version/STWCSMapEditor/WCS/obj/Debug/WCS.csproj.FileListAbsolute.txt
New file
@@ -0,0 +1,557 @@
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\bin\Debug\WCS.exe
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\bin\Debug\WCS.pdb
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\ResolveAssemblyReference.cache
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.exe
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.pdb
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\bin\Debug\@public.dll
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\bin\Debug\@public.pdb
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.warn.resources
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\传统货架\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.main.resources
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.exe
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.pdb
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\bin\Debug\WCS.exe
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\bin\Debug\WCS.pdb
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\bin\Debug\@public.dll
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\bin\Debug\@public.pdb
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\ResolveAssemblyReference.cache
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.main.resources
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.warn.resources
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\hzks\临平凯撒\程序\WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\WCS\WCS\WCS\obj\Debug\WCS.exe
D:\WCS\WCS\WCS\obj\Debug\WCS.pdb
D:\WCS\WCS\WCS\bin\Debug\WCS.exe
D:\WCS\WCS\WCS\bin\Debug\WCS.pdb
D:\WCS\WCS\WCS\bin\Debug\@public.dll
D:\WCS\WCS\WCS\bin\Debug\@public.pdb
D:\WCS\WCS\WCS\obj\Debug\ResolveAssemblyReference.cache
D:\WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\WCS\WCS\WCS\obj\Debug\WCS.main.resources
D:\WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\WCS\WCS\WCS\obj\Debug\WCS.warn.resources
D:\WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.exe
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.pdb
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\ResolveAssemblyReference.cache
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.main.resources
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.warn.resources
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\bin\Debug\WCS.exe
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\bin\Debug\WCS.pdb
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\bin\Debug\@public.dll
C:\Documents and Settings\Administrator\桌面\hzks\WCS\WCS\WCS\bin\Debug\@public.pdb
D:\asrs\WCS\WCS\WCS\bin\Debug\WCS.exe
D:\asrs\WCS\WCS\WCS\bin\Debug\WCS.pdb
D:\asrs\WCS\WCS\WCS\bin\Debug\@public.dll
D:\asrs\WCS\WCS\WCS\bin\Debug\@public.pdb
D:\asrs\WCS\WCS\WCS\obj\Debug\ResolveAssemblyReference.cache
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.main.resources
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.warn.resources
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.exe
D:\asrs\WCS\WCS\WCS\obj\Debug\WCS.pdb
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\bin\Debug\WCS.exe
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\bin\Debug\WCS.pdb
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\bin\Debug\@public.dll
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\bin\Debug\@public.pdb
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\ResolveAssemblyReference.cache
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.main.resources
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.warn.resources
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.exe
C:\Users\hzks_wcs\Desktop\WCS\WCS\WCS\obj\Debug\WCS.pdb
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\bin\Debug\WCS.exe
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\bin\Debug\WCS.pdb
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\bin\Debug\@public.dll
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\bin\Debug\@public.pdb
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\ResolveAssemblyReference.cache
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.main.resources
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.warn.resources
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.exe
D:\asrs\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.pdb
D:\杭州\程序\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.exe
D:\杭州\程序\自动仓库最新程序(与ERP连)\WCS\WCS\WCS\obj\Debug\WCS.pdb
E:\work\立晟\运达\WCS\WCS\WCS\bin\Debug\WCS.exe.config
E:\work\立晟\运达\WCS\WCS\WCS\bin\Debug\WCS.exe
E:\work\立晟\运达\WCS\WCS\WCS\bin\Debug\WCS.pdb
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.main.resources
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.warn.resources
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.exe
E:\work\立晟\运达\WCS\WCS\WCS\obj\Debug\WCS.pdb
D:\work\WCS\WCS\bin\Debug\WCS.exe.config
D:\work\WCS\WCS\bin\Debug\WCS.exe
D:\work\WCS\WCS\bin\Debug\WCS.pdb
D:\work\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\WCS\WCS\obj\Debug\WCS.main.resources
D:\work\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\work\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\WCS\WCS\obj\Debug\WCS.warn.resources
D:\work\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\work\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\WCS\WCS\obj\Debug\WCS.exe
D:\work\WCS\WCS\obj\Debug\WCS.pdb
D:\work\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\work\鼎胜\WCS\WCS\bin\Debug\WCS.exe.config
D:\work\鼎胜\WCS\WCS\bin\Debug\WCS.exe
D:\work\鼎胜\WCS\WCS\bin\Debug\WCS.pdb
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.main.resources
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.exe
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.pdb
C:\Users\admin\Desktop\WCS\WCS\bin\Debug\WCS.exe.config
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.exe
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.pdb
C:\Users\admin\Desktop\WCS\WCS\bin\Debug\WCS.exe
C:\Users\admin\Desktop\WCS\WCS\bin\Debug\WCS.pdb
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.main.resources
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.plcset.resources
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.warn.resources
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.warn1.resources
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Users\admin\Desktop\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\work\鼎胜\WCS_20190729001\WCS\bin\Debug\WCS.exe.config
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.exe
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.pdb
D:\work\鼎胜\WCS_20190729001\WCS\bin\Debug\WCS.exe
D:\work\鼎胜\WCS_20190729001\WCS\bin\Debug\WCS.pdb
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.main.resources
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.plcset.resources
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.warn.resources
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.warn1.resources
D:\work\鼎胜\WCS_20190729001\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\WCS\WCS\bin\Debug\WCS.exe.config
C:\WCS\WCS\bin\Debug\WCS.exe
C:\WCS\WCS\bin\Debug\WCS.pdb
C:\WCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\WCS\WCS\obj\Debug\WCS.main.resources
C:\WCS\WCS\obj\Debug\WCS.plcset.resources
C:\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\WCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\WCS\WCS\obj\Debug\WCS.warn.resources
C:\WCS\WCS\obj\Debug\WCS.warn1.resources
C:\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\WCS\WCS\obj\Debug\WCS.exe
C:\WCS\WCS\obj\Debug\WCS.pdb
C:\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.exit.resources
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.warn.resources
D:\work\鼎胜\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\bin\Debug\WCS.exe.config
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.exe
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.pdb
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\bin\Debug\WCS.exe
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\bin\Debug\WCS.pdb
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.exit.resources
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.main.resources
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.plcset.resources
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.warn.resources
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.warn1.resources
C:\Users\Administrator\Documents\WeChat Files\lxy199512\FileStorage\File\2020-04\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\周其明\克劳斯玛菲\WCS\WCS\bin\Debug\WCS.exe.config
D:\work\周其明\克劳斯玛菲\WCS\WCS\bin\Debug\WCS.exe
D:\work\周其明\克劳斯玛菲\WCS\WCS\bin\Debug\WCS.pdb
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.exit.resources
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.main.resources
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.warn.resources
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.exe
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.pdb
D:\work\周其明\克劳斯玛菲\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\work\杨运\广德立库\WCS\WCS\bin\Debug\WCS.exe.config
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.exe
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.pdb
D:\work\杨运\广德立库\WCS\WCS\bin\Debug\WCS.exe
D:\work\杨运\广德立库\WCS\WCS\bin\Debug\WCS.pdb
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.exit.resources
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.main.resources
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.warn.resources
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\work\杨运\广德立库\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\杨运\嘉善厂立库\WCS\WCS\bin\Debug\WCS.exe.config
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.exe
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.pdb
D:\work\杨运\嘉善厂立库\WCS\WCS\bin\Debug\WCS.exe
D:\work\杨运\嘉善厂立库\WCS\WCS\bin\Debug\WCS.pdb
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.exit.resources
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.main.resources
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.warn.resources
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\杨运\嘉善厂立库\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\work\王国俊\诚达\WCS\WCS\bin\Debug\WCS.exe.config
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.exe
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.pdb
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.exit.resources
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.main.resources
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.warn.resources
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\work\王国俊\诚达\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\王国俊\诚达\WCS\WCS\bin\Debug\WCS.exe
D:\work\王国俊\诚达\WCS\WCS\bin\Debug\WCS.pdb
D:\BitTorrent\9.C#\WCS\WCS\bin\Debug\WCS.exe.config
D:\BitTorrent\9.C#\WCS\WCS\obj\Debug\WCS.exe
D:\BitTorrent\9.C#\WCS\WCS\obj\Debug\WCS.pdb
D:\Download\9.C#\WCS\WCS\bin\Debug\WCS.exe.config
D:\Download\9.C#\WCS\WCS\obj\Debug\WCS.exe
D:\Download\9.C#\WCS\WCS\obj\Debug\WCS.pdb
D:\Download\9.C#\WCS\WCS\WCS\bin\Debug\WCS.exe.config
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.exe
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.pdb
D:\Download\9.C#\WCS\WCS\WCS\bin\Debug\WCS.exe
D:\Download\9.C#\WCS\WCS\WCS\bin\Debug\WCS.pdb
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.exit.resources
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.main.resources
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.warn.resources
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\Download\9.C#\WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Users\DELL\Desktop\WCS\WCS\bin\Debug\WCS.exe.config
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.exe
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.pdb
C:\Users\DELL\Desktop\WCS\WCS\bin\Debug\WCS.exe
C:\Users\DELL\Desktop\WCS\WCS\bin\Debug\WCS.pdb
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.exit.resources
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.main.resources
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.plcset.resources
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.warn.resources
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.warn1.resources
C:\Users\DELL\Desktop\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Users\DELL\Desktop\CDYYWCS\WCS\bin\Debug\WCS.exe.config
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.exe
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.pdb
C:\Users\DELL\Desktop\CDYYWCS\WCS\bin\Debug\WCS.exe
C:\Users\DELL\Desktop\CDYYWCS\WCS\bin\Debug\WCS.pdb
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.exit.resources
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.main.resources
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.plcset.resources
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.warn.resources
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.warn1.resources
C:\Users\DELL\Desktop\CDYYWCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\BitTorrent\9.C#\诚达药业WCS\CDYYWCS\WCS\bin\Debug\WCS.exe.config
D:\BitTorrent\9.C#\诚达药业WCS\CDYYWCS\WCS\obj\Debug\WCS.exe
D:\BitTorrent\9.C#\诚达药业WCS\CDYYWCS\WCS\obj\Debug\WCS.pdb
C:\Users\41073\Desktop\CDYYWCS\WCS\bin\Debug\WCS.exe.config
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.exe
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.pdb
C:\Users\41073\Desktop\CDYYWCS\WCS\bin\Debug\WCS.exe
C:\Users\41073\Desktop\CDYYWCS\WCS\bin\Debug\WCS.pdb
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.exit.resources
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.main.resources
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.plcset.resources
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.warn.resources
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.warn1.resources
C:\Users\41073\Desktop\CDYYWCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Users\41073\Desktop\诚达药业WCS\WCS\bin\Debug\WCS.exe.config
C:\Users\41073\Desktop\诚达药业WCS\WCS\obj\Debug\WCS.exe
C:\Users\41073\Desktop\诚达药业WCS\WCS\obj\Debug\WCS.pdb
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\bin\Debug\WCS.exe.config
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.exe
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.pdb
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.exit.resources
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.main.resources
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.plcset.resources
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.warn.resources
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.warn1.resources
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\bin\Debug\WCS.exe
C:\Users\41073\Desktop\捷众WCS\WCS\WCS\bin\Debug\WCS.pdb
D:\JZWCS\WCS\WCS\bin\Debug\WCS.exe.config
D:\JZWCS\WCS\WCS\obj\Debug\WCS.exe
D:\JZWCS\WCS\WCS\obj\Debug\WCS.pdb
D:\JZWCS\WCS\WCS\bin\Debug\WCS.exe
D:\JZWCS\WCS\WCS\bin\Debug\WCS.pdb
D:\JZWCS\WCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\JZWCS\WCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\JZWCS\WCS\WCS\obj\Debug\WCS.exit.resources
D:\JZWCS\WCS\WCS\obj\Debug\WCS.main.resources
D:\JZWCS\WCS\WCS\obj\Debug\WCS.plcset.resources
D:\JZWCS\WCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\JZWCS\WCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\JZWCS\WCS\WCS\obj\Debug\WCS.warn.resources
D:\JZWCS\WCS\WCS\obj\Debug\WCS.warn1.resources
D:\JZWCS\WCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\bin\Debug\WCS.exe.config
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\bin\Debug\WCS.exe
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\bin\Debug\WCS.pdb
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\bin\Debug\CSkin.dll
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\bin\Debug\CSkin.xml
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.crndisplay.resources
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.exit.resources
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.main.resources
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.plcset.resources
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.stndisplay.resources
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.warn.resources
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.warn1.resources
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.exe
C:\Users\41073\Desktop\界面修改\SXJZWCS\WCS\obj\Debug\WCS.pdb
E:\WCS_Cout\界面修改\SXJZWCS\WCS\bin\Debug\WCS.exe.config
E:\WCS_Cout\界面修改\SXJZWCS\WCS\obj\Debug\WCS.exe
E:\WCS_Cout\界面修改\SXJZWCS\WCS\obj\Debug\WCS.pdb
E:\WCS_count\界面修改\SXJZWCS\WCS\bin\Debug\WCS.exe.config
E:\WCS_count\界面修改\SXJZWCS\WCS\bin\Debug\WCS.exe
E:\WCS_count\界面修改\SXJZWCS\WCS\bin\Debug\WCS.pdb
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.crndisplay.resources
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.exit.resources
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.main.resources
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.plcset.resources
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.Properties.Resources.resources
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.stndisplay.resources
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.warn.resources
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.warn1.resources
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.exe
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.pdb
E:\WCS_count\界面修改\SXJZWCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
E:\SXJZWCS\WCS\bin\Debug\WCS.exe.config
E:\SXJZWCS\WCS\obj\Debug\WCS.exe
E:\SXJZWCS\WCS\obj\Debug\WCS.pdb
E:\SXJZWCS\WCS\bin\Debug\WCS.exe
E:\SXJZWCS\WCS\bin\Debug\WCS.pdb
E:\SXJZWCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
E:\SXJZWCS\WCS\obj\Debug\WCS.crndisplay.resources
E:\SXJZWCS\WCS\obj\Debug\WCS.exit.resources
E:\SXJZWCS\WCS\obj\Debug\WCS.main.resources
E:\SXJZWCS\WCS\obj\Debug\WCS.plcset.resources
E:\SXJZWCS\WCS\obj\Debug\WCS.Properties.Resources.resources
E:\SXJZWCS\WCS\obj\Debug\WCS.stndisplay.resources
E:\SXJZWCS\WCS\obj\Debug\WCS.warn.resources
E:\SXJZWCS\WCS\obj\Debug\WCS.warn1.resources
E:\SXJZWCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
E:\KLSMFWCS20220326\WCS\bin\Debug\WCS.exe.config
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.exe
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.pdb
E:\KLSMFWCS20220326\WCS\bin\Debug\WCS.exe
E:\KLSMFWCS20220326\WCS\bin\Debug\WCS.pdb
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.crndisplay.resources
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.exit.resources
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.main.resources
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.plcset.resources
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.Properties.Resources.resources
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.stndisplay.resources
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.warn.resources
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.warn1.resources
E:\KLSMFWCS20220326\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
E:\新建文件夹\KLSMFWCS20220326\WCS\bin\Debug\WCS.exe.config
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.exe
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.pdb
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.crndisplay.resources
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.exit.resources
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.main.resources
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.plcset.resources
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.Properties.Resources.resources
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.stndisplay.resources
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.warn.resources
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.warn1.resources
E:\新建文件夹\KLSMFWCS20220326\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
E:\新建文件夹\KLSMFWCS20220326\WCS\bin\Debug\WCS.exe
E:\新建文件夹\KLSMFWCS20220326\WCS\bin\Debug\WCS.pdb
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\bin\Debug\WCS.exe.config
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.exe
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.pdb
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\bin\Debug\WCS.exe
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\bin\Debug\WCS.pdb
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.exit.resources
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.main.resources
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.plcset.resources
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.warn.resources
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.warn1.resources
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.Form2.resources
D:\work\周其明\克劳斯玛菲\克劳斯玛菲二期\KLSWCS\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\bin\Debug\WCS.exe.config
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.exe
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.pdb
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.exit.resources
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.main.resources
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.Form2.resources
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.plcset.resources
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.warn.resources
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.warn1.resources
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\bin\Debug\WCS.exe
D:\work\王国俊\海盐力源\WCSMapEditor\WCS\bin\Debug\WCS.pdb
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\bin\Debug\WCS.exe.config
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.exe
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.pdb
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\bin\Debug\WCS.exe
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\bin\Debug\WCS.pdb
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.exit.resources
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.main.resources
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.Form2.resources
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.plcset.resources
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.warn.resources
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.warn1.resources
D:\work\接乃奇\耀能PACK线\WCSMapEditor\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\bin\Debug\WCS.exe.config
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\bin\Debug\WCS.exe
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\bin\Debug\WCS.pdb
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.exit.resources
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.main.resources
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.Form2.resources
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.plcset.resources
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.warn.resources
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.warn1.resources
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.exe
D:\work\王国俊\宏挺三期\WCSMapEditor\WCS\obj\Debug\WCS.pdb
D:\work\王国俊\诚达\WCSMapEditor\WCS\bin\Debug\WCS.exe.config
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.exe
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.pdb
D:\work\王国俊\诚达\WCSMapEditor\WCS\bin\Debug\WCS.exe
D:\work\王国俊\诚达\WCSMapEditor\WCS\bin\Debug\WCS.pdb
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.crndisplay.resources
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.exit.resources
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.main.resources
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.Form2.resources
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.plcset.resources
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.Properties.Resources.resources
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.stndisplay.resources
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.warn.resources
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.warn1.resources
D:\work\王国俊\诚达\WCSMapEditor\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\project\WCSMapEditor\WCS\bin\Debug\WCS.exe.config
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.exe
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.pdb
C:\project\WCSMapEditor\WCS\bin\Debug\WCS.exe
C:\project\WCSMapEditor\WCS\bin\Debug\WCS.pdb
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.crndisplay.resources
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.exit.resources
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.main.resources
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.Form2.resources
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.plcset.resources
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.stndisplay.resources
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.warn.resources
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.warn1.resources
C:\project\WCSMapEditor\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\project\STWCSMapEditor\WCS\bin\Debug\WCS.exe.config
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.exe
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.pdb
C:\project\STWCSMapEditor\WCS\bin\Debug\WCS.exe
C:\project\STWCSMapEditor\WCS\bin\Debug\WCS.pdb
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.csprojResolveAssemblyReference.cache
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.crndisplay.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.exit.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.main.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.Form2.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.plcset.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.Properties.Resources.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.stndisplay.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.warn.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.warn1.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.csproj.GenerateResource.Cache
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.Form3.resources
C:\project\STWCSMapEditor\WCS\obj\Debug\WCS.Form4.resources
Diff truncated after the above file
version/STWCSMapEditor/WCS/obj/Debug/WCS.csproj.GenerateResource.Cache version/STWCSMapEditor/WCS/obj/Debug/WCS.csprojResolveAssemblyReference.cache version/STWCSMapEditor/WCS/obj/Debug/WCS.exe version/STWCSMapEditor/WCS/obj/Debug/WCS.exit.resources version/STWCSMapEditor/WCS/obj/Debug/WCS.main.resources version/STWCSMapEditor/WCS/obj/Debug/WCS.pdb version/STWCSMapEditor/WCS/obj/Debug/WCS.plcset.resources version/STWCSMapEditor/WCS/obj/Debug/WCS.stndisplay.resources version/STWCSMapEditor/WCS/obj/Debug/WCS.warn.resources version/STWCSMapEditor/WCS/obj/Debug/WCS.warn1.resources version/STWCSMapEditor/WCS/obj/Release/ResolveAssemblyReference.cache version/STWCSMapEditor/WCS/obj/Release/TempPE/Properties.Resources.Designer.cs.dll version/STWCSMapEditor/WCS/obj/Release/WCS.Properties.Resources.resources version/STWCSMapEditor/WCS/obj/Release/WCS.crndisplay.resources version/STWCSMapEditor/WCS/obj/Release/WCS.csproj.FileListAbsolute.txt version/STWCSMapEditor/WCS/obj/Release/WCS.csproj.GenerateResource.Cache version/STWCSMapEditor/WCS/obj/Release/WCS.exe version/STWCSMapEditor/WCS/obj/Release/WCS.main.resources version/STWCSMapEditor/WCS/obj/Release/WCS.pdb version/STWCSMapEditor/WCS/obj/Release/WCS.plcset.resources version/STWCSMapEditor/WCS/obj/Release/WCS.stndisplay.resources version/STWCSMapEditor/WCS/obj/Release/WCS.warn.resources version/STWCSMapEditor/WCS/obj/Release/WCS.warn1.resources version/STWCSMapEditor/WCS/plcset.Designer.cs version/STWCSMapEditor/WCS/plcset.cs version/STWCSMapEditor/WCS/plcset.resx version/STWCSMapEditor/WCS/stndisplay.Designer.cs version/STWCSMapEditor/WCS/stndisplay.cs version/STWCSMapEditor/WCS/stndisplay.resx version/STWCSMapEditor/WCS/warn.Designer.cs version/STWCSMapEditor/WCS/warn.cs version/STWCSMapEditor/WCS/warn.resx version/STWCSMapEditor/WCS/warn1.Designer.cs version/STWCSMapEditor/WCS/warn1.cs version/STWCSMapEditor/WCS/warn1.resx