├── .gitignore ├── LICENSE ├── README.md ├── TCP2COM.cbp ├── TCP2COM.depend ├── TCP2COM.layout ├── TCP2COMApp.cpp ├── TCP2COMApp.h ├── TCP2COMMain.cpp ├── TCP2COMMain.h ├── bin └── Debug │ ├── com0com_x64 │ ├── ReadMe.txt │ ├── cncport.inf │ ├── com0com.cat │ ├── com0com.inf │ ├── com0com.sys │ └── comport.inf │ ├── com0com_x86 │ ├── ReadMe.txt │ ├── cncport.inf │ ├── com0com.cat │ ├── com0com.inf │ ├── com0com.sys │ └── comport.inf │ └── config.ini ├── include ├── CommListenerBase.h ├── CommServiceBase.h ├── FactoryPreset.h ├── FrameObserver.h ├── NetCommService.h ├── SerialCommService.h ├── SerialPortListener.h ├── TCPServerListener.h └── VirtualCom.h ├── obj └── Debug │ └── resource.res ├── resource.rc ├── src ├── CommServiceBase.cpp ├── FactoryPreset.cpp ├── NetCommService.cpp ├── SerialCommService.cpp ├── SerialPortListener.cpp ├── TCPServerListener.cpp └── VirtualCom.cpp └── wxsmith └── TCP2COMdialog.wxs /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 维新科技工作室 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 项目名称:TCP2COM 2 | 网络转串口软件(基于com0com) 3 | 4 | 该软件主要用于工业级物联网通信或者传感器组网等应用, 5 | 主要实现的功能是将TCP网络通信透明转发到串口。 6 | 7 | 实现原理主要使用类似虚拟串口之类的软件,从网络 8 | 接收数据流并将数据流写入虚拟串口对的输入端口, 9 | 这时就可以使用第三方软件或者硬件通过串口接收 10 | 网络数据。 11 | 12 | 注意:第一次使用该软件时必须先“安装驱动”。 13 | 14 | -------------------------------------------------------------------------------- /TCP2COM.cbp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 114 | 115 | -------------------------------------------------------------------------------- /TCP2COM.depend: -------------------------------------------------------------------------------- 1 | # depslib dependency file v1.0 2 | 1557363798 source:e:\c_proj\tcp2com\resource.rc 3 | "wx/msw/wx.rc" 4 | 5 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wx.rc 6 | 7 | "wx/msw/wince/wince.rc" 8 | "wx/msw/rcdefs.h" 9 | 10 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\wince.rc 11 | 12 | "wx/msw/wince/resources.h" 13 | "wx/msw/wince/smartphone.rc" 14 | 15 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\resources.h 16 | 17 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\smartphone.rc 18 | 19 | 20 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\rcdefs.h 21 | 22 | 1557197439 source:e:\c_proj\tcp2com\tcp2comapp.cpp 23 | "TCP2COMApp.h" 24 | "TCP2COMMain.h" 25 | 26 | 27 | 1557197439 e:\c_proj\tcp2com\tcp2comapp.h 28 | 29 | 30 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\app.h 31 | "wx/event.h" 32 | "wx/eventfilter.h" 33 | "wx/build.h" 34 | "wx/cmdargs.h" 35 | "wx/init.h" 36 | "wx/intl.h" 37 | "wx/log.h" 38 | "wx/unix/app.h" 39 | "wx/msw/app.h" 40 | "wx/motif/app.h" 41 | "wx/dfb/app.h" 42 | "wx/gtk/app.h" 43 | "wx/gtk1/app.h" 44 | "wx/x11/app.h" 45 | "wx/osx/app.h" 46 | "wx/cocoa/app.h" 47 | "wx/os2/app.h" 48 | "wx/univ/theme.h" 49 | 50 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\event.h 51 | "wx/defs.h" 52 | "wx/cpp.h" 53 | "wx/object.h" 54 | "wx/clntdata.h" 55 | "wx/gdicmn.h" 56 | "wx/cursor.h" 57 | "wx/mousestate.h" 58 | "wx/dynarray.h" 59 | "wx/thread.h" 60 | "wx/tracker.h" 61 | "wx/typeinfo.h" 62 | "wx/any.h" 63 | "wx/meta/convertible.h" 64 | "wx/meta/removeref.h" 65 | 66 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\defs.h 67 | "wx/platform.h" 68 | "wx/version.h" 69 | "wx/dlimpexp.h" 70 | 71 | "wx/debug.h" 72 | 73 | 74 | "wx/windowid.h" 75 | 76 | "wx/msw/winundef.h" 77 | "wx/features.h" 78 | 79 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\platform.h 80 | 81 | 82 | 83 | "wx/osx/config_xcode.h" 84 | "wx/android/config_android.h" 85 | "wx/compiler.h" 86 | "wx/setup.h" 87 | "wx/msw/wince/libraries.h" 88 | "wx/msw/libraries.h" 89 | "wx/msw/gccpriv.h" 90 | 91 | 92 | "wx/chkconf.h" 93 | 94 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\config_xcode.h 95 | 96 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\android\config_android.h 97 | 98 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\compiler.h 99 | 100 | 1520441738 d:\dev_lib\c\wxwidgets\lib\gcc_dll\mswu\wx\setup.h 101 | 102 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\libraries.h 103 | 104 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\libraries.h 105 | 106 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\gccpriv.h 107 | <_mingw.h> 108 | 109 | 110 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\chkconf.h 111 | "wx/msw/wince/chkconf.h" 112 | "wx/msw/chkconf.h" 113 | "wx/gtk/chkconf.h" 114 | "wx/gtk/chkconf.h" 115 | "wx/cocoa/chkconf.h" 116 | "wx/osx/chkconf.h" 117 | "wx/os2/chkconf.h" 118 | "wx/dfb/chkconf.h" 119 | "wx/motif/chkconf.h" 120 | "wx/x11/chkconf.h" 121 | "wx/android/chkconf.h" 122 | "wx/unix/chkconf.h" 123 | "wx/univ/chkconf.h" 124 | 125 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\chkconf.h 126 | 127 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\chkconf.h 128 | 129 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\chkconf.h 130 | 131 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\chkconf.h 132 | 133 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\chkconf.h 134 | "wx/osx/iphone/chkconf.h" 135 | "wx/osx/carbon/chkconf.h" 136 | "wx/osx/cocoa/chkconf.h" 137 | 138 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\iphone\chkconf.h 139 | 140 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\carbon\chkconf.h 141 | 142 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\cocoa\chkconf.h 143 | 144 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\chkconf.h 145 | 146 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\chkconf.h 147 | 148 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\chkconf.h 149 | 150 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\chkconf.h 151 | 152 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\android\chkconf.h 153 | 154 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\unix\chkconf.h 155 | 156 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\chkconf.h 157 | 158 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\version.h 159 | "wx/cpp.h" 160 | 161 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cpp.h 162 | "wx/compiler.h" 163 | 164 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dlimpexp.h 165 | 166 | 1524107611 d:\dev_lib\c\wxwidgets\include\wx\debug.h 167 | 168 | 169 | "wx/chartype.h" 170 | "wx/cpp.h" 171 | "wx/dlimpexp.h" 172 | 173 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\chartype.h 174 | "wx/platform.h" 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\windowid.h 188 | 189 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\winundef.h 190 | 191 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\features.h 192 | 193 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\object.h 194 | "wx/memory.h" 195 | "wx/xti.h" 196 | "wx/rtti.h" 197 | "wx/xti2.h" 198 | "wx/msw/msvcrt.h" 199 | 200 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\memory.h 201 | "wx/defs.h" 202 | "wx/string.h" 203 | "wx/msgout.h" 204 | 205 | 206 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\string.h 207 | "wx/defs.h" 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | "wx/wxcrtbase.h" 219 | "wx/strvararg.h" 220 | "wx/buffer.h" 221 | "wx/strconv.h" 222 | "wx/stringimpl.h" 223 | "wx/stringops.h" 224 | "wx/unichar.h" 225 | "wx/tls.h" 226 | "wx/iosfwrap.h" 227 | "wx/crt.h" 228 | 229 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\wxcrtbase.h 230 | "wx/chartype.h" 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\strvararg.h 239 | "wx/platform.h" 240 | "wx/cpp.h" 241 | "wx/chartype.h" 242 | "wx/strconv.h" 243 | "wx/buffer.h" 244 | "wx/unichar.h" 245 | 246 | 247 | 248 | "wx/stringimpl.h" 249 | 250 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\strconv.h 251 | "wx/defs.h" 252 | "wx/chartype.h" 253 | "wx/buffer.h" 254 | "typeinfo.h" 255 | 256 | "wx/fontenc.h" 257 | 258 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\buffer.h 259 | "wx/chartype.h" 260 | "wx/wxcrtbase.h" 261 | 262 | 263 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\typeinfo.h 264 | "wx/defs.h" 265 | 266 | 267 | 268 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\fontenc.h 269 | 270 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\unichar.h 271 | "wx/defs.h" 272 | "wx/chartype.h" 273 | "wx/stringimpl.h" 274 | 275 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\stringimpl.h 276 | "wx/defs.h" 277 | "wx/chartype.h" 278 | "wx/wxcrtbase.h" 279 | 280 | "wx/beforestd.h" 281 | 282 | "wx/afterstd.h" 283 | 284 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\beforestd.h 285 | 286 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\afterstd.h 287 | "wx/msw/winundef.h" 288 | 289 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\stringops.h 290 | "wx/chartype.h" 291 | "wx/stringimpl.h" 292 | "wx/unichar.h" 293 | "wx/buffer.h" 294 | 295 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\tls.h 296 | "wx/defs.h" 297 | "wx/msw/tls.h" 298 | "wx/os2/tls.h" 299 | "wx/unix/tls.h" 300 | 301 | 302 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\tls.h 303 | "wx/msw/wrapwin.h" 304 | "wx/thread.h" 305 | "wx/vector.h" 306 | 307 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wrapwin.h 308 | "wx/platform.h" 309 | 310 | 311 | "wx/msw/winundef.h" 312 | 313 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\thread.h 314 | "wx/defs.h" 315 | 316 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\vector.h 317 | "wx/defs.h" 318 | 319 | 320 | "wx/scopeguard.h" 321 | "wx/meta/movable.h" 322 | "wx/meta/if.h" 323 | "wx/beforestd.h" 324 | 325 | "wx/afterstd.h" 326 | 327 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\scopeguard.h 328 | "wx/defs.h" 329 | "wx/except.h" 330 | 331 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\except.h 332 | "wx/defs.h" 333 | 334 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\meta\movable.h 335 | "wx/meta/pod.h" 336 | "wx/string.h" 337 | 338 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\meta\pod.h 339 | "wx/defs.h" 340 | 341 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\meta\if.h 342 | "wx/defs.h" 343 | 344 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\tls.h 345 | "wx/os2/private.h" 346 | "wx/thread.h" 347 | "wx/vector.h" 348 | 349 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\private.h 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | "wx/dlimpexp.h" 358 | "wx/fontenc.h" 359 | "wx/thread.h" 360 | 361 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\unix\tls.h 362 | 363 | 364 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\iosfwrap.h 365 | 366 | 367 | "wx/msw/winundef.h" 368 | 369 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\crt.h 370 | "wx/defs.h" 371 | "wx/chartype.h" 372 | "wx/wxcrt.h" 373 | "wx/wxcrtvararg.h" 374 | 375 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\wxcrt.h 376 | "wx/wxcrtbase.h" 377 | "wx/string.h" 378 | 379 | 380 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\wxcrtvararg.h 381 | "wx/wxcrt.h" 382 | "wx/strvararg.h" 383 | "wx/string.h" 384 | 385 | 386 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msgout.h 387 | "wx/defs.h" 388 | "wx/chartype.h" 389 | "wx/strvararg.h" 390 | 391 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\xti.h 392 | "wx/defs.h" 393 | "wx/xtitypes.h" 394 | "wx/xtihandler.h" 395 | 396 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\xtitypes.h 397 | "wx/defs.h" 398 | "wx/string.h" 399 | "wx/hashmap.h" 400 | "wx/arrstr.h" 401 | "wx/flags.h" 402 | "wx/intl.h" 403 | "wx/log.h" 404 | 405 | 406 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\hashmap.h 407 | "wx/string.h" 408 | "wx/wxcrt.h" 409 | 410 | 411 | 412 | 413 | 414 | 415 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\arrstr.h 416 | "wx/defs.h" 417 | "wx/string.h" 418 | "wx/dynarray.h" 419 | "wx/beforestd.h" 420 | 421 | "wx/afterstd.h" 422 | 423 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dynarray.h 424 | "wx/defs.h" 425 | "wx/beforestd.h" 426 | 427 | 428 | "wx/afterstd.h" 429 | 430 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\flags.h 431 | 432 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\intl.h 433 | "wx/defs.h" 434 | "wx/string.h" 435 | "wx/translation.h" 436 | "wx/fontenc.h" 437 | "wx/language.h" 438 | 439 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\translation.h 440 | "wx/defs.h" 441 | "wx/string.h" 442 | "wx/buffer.h" 443 | "wx/language.h" 444 | "wx/hashmap.h" 445 | "wx/strconv.h" 446 | "wx/scopedptr.h" 447 | 448 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\language.h 449 | "wx/defs.h" 450 | 451 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\scopedptr.h 452 | "wx/defs.h" 453 | "wx/checkeddelete.h" 454 | 455 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\checkeddelete.h 456 | "wx/cpp.h" 457 | 458 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\log.h 459 | "wx/defs.h" 460 | "wx/cpp.h" 461 | "wx/string.h" 462 | "wx/strvararg.h" 463 | "wx/arrstr.h" 464 | 465 | "wx/dynarray.h" 466 | "wx/hashmap.h" 467 | "wx/thread.h" 468 | "wx/iosfwrap.h" 469 | "wx/generic/logg.h" 470 | "wx/cocoa/log.h" 471 | 472 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\logg.h 473 | 474 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\log.h 475 | 476 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\xtihandler.h 477 | "wx/defs.h" 478 | "wx/xti.h" 479 | 480 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\rtti.h 481 | "wx/memory.h" 482 | "wx/flags.h" 483 | 484 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\xti2.h 485 | "wx/xtiprop.h" 486 | "wx/xtictor.h" 487 | 488 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\xtiprop.h 489 | "wx/defs.h" 490 | "wx/xti.h" 491 | "wx/any.h" 492 | 493 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\any.h 494 | "wx/defs.h" 495 | 496 | "wx/string.h" 497 | "wx/meta/if.h" 498 | "wx/typeinfo.h" 499 | "wx/list.h" 500 | "wx/datetime.h" 501 | "wx/variant.h" 502 | 503 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\list.h 504 | "wx/defs.h" 505 | "wx/object.h" 506 | "wx/string.h" 507 | "wx/vector.h" 508 | "wx/beforestd.h" 509 | 510 | 511 | 512 | "wx/afterstd.h" 513 | 514 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\datetime.h 515 | "wx/defs.h" 516 | "wx/msw/wince/time.h" 517 | 518 | 519 | "wx/longlong.h" 520 | "wx/anystr.h" 521 | "wx/dynarray.h" 522 | 523 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\time.h 524 | 525 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\longlong.h 526 | "wx/defs.h" 527 | "wx/string.h" 528 | 529 | "wx/iosfwrap.h" 530 | 531 | "wx/strvararg.h" 532 | 533 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\anystr.h 534 | "wx/string.h" 535 | 536 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\variant.h 537 | "wx/defs.h" 538 | "wx/object.h" 539 | "wx/string.h" 540 | "wx/arrstr.h" 541 | "wx/list.h" 542 | "wx/cpp.h" 543 | "wx/longlong.h" 544 | "wx/datetime.h" 545 | "wx/iosfwrap.h" 546 | "wx/any.h" 547 | 548 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\xtictor.h 549 | "wx/defs.h" 550 | "wx/xti.h" 551 | 552 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\msvcrt.h 553 | 554 | 555 | 556 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\clntdata.h 557 | "wx/defs.h" 558 | "wx/string.h" 559 | "wx/hashmap.h" 560 | 561 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gdicmn.h 562 | "wx/defs.h" 563 | "wx/list.h" 564 | "wx/string.h" 565 | "wx/fontenc.h" 566 | "wx/hashmap.h" 567 | "wx/math.h" 568 | 569 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\math.h 570 | "wx/defs.h" 571 | 572 | 573 | 574 | 575 | 576 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cursor.h 577 | "wx/defs.h" 578 | "wx/msw/cursor.h" 579 | "wx/motif/cursor.h" 580 | "wx/gtk/cursor.h" 581 | "wx/gtk1/cursor.h" 582 | "wx/x11/cursor.h" 583 | "wx/dfb/cursor.h" 584 | "wx/osx/cursor.h" 585 | "wx/cocoa/cursor.h" 586 | "wx/os2/cursor.h" 587 | "wx/utils.h" 588 | 589 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\cursor.h 590 | "wx/msw/gdiimage.h" 591 | 592 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\gdiimage.h 593 | "wx/gdiobj.h" 594 | "wx/gdicmn.h" 595 | "wx/list.h" 596 | 597 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gdiobj.h 598 | "wx/object.h" 599 | 600 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\cursor.h 601 | "wx/gdiobj.h" 602 | "wx/gdicmn.h" 603 | 604 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\cursor.h 605 | "wx/gdiobj.h" 606 | "wx/gdicmn.h" 607 | 608 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\cursor.h 609 | "wx/gdiobj.h" 610 | "wx/gdicmn.h" 611 | "wx/image.h" 612 | 613 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\image.h 614 | "wx/defs.h" 615 | "wx/object.h" 616 | "wx/string.h" 617 | "wx/gdicmn.h" 618 | "wx/hashmap.h" 619 | "wx/arrstr.h" 620 | "wx/stream.h" 621 | "wx/variant.h" 622 | "wx/imagbmp.h" 623 | "wx/imagpng.h" 624 | "wx/imaggif.h" 625 | "wx/imagpcx.h" 626 | "wx/imagjpeg.h" 627 | "wx/imagtga.h" 628 | "wx/imagtiff.h" 629 | "wx/imagpnm.h" 630 | "wx/imagxpm.h" 631 | "wx/imagiff.h" 632 | 633 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\stream.h 634 | "wx/defs.h" 635 | 636 | "wx/object.h" 637 | "wx/string.h" 638 | "wx/filefn.h" 639 | 640 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\filefn.h 641 | "wx/list.h" 642 | "wx/arrstr.h" 643 | "wx/msw/wince/time.h" 644 | "wx/msw/private.h" 645 | 646 | 647 | 648 | 649 | "wx/os2/private.h" 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\private.h 668 | "wx/msw/wrapwin.h" 669 | "wx/msw/microwin.h" 670 | "wx/log.h" 671 | "wx/window.h" 672 | "wx/gdicmn.h" 673 | "wx/colour.h" 674 | 675 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\microwin.h 676 | 677 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\window.h 678 | "wx/event.h" 679 | "wx/list.h" 680 | "wx/cursor.h" 681 | "wx/font.h" 682 | "wx/colour.h" 683 | "wx/region.h" 684 | "wx/utils.h" 685 | "wx/intl.h" 686 | "wx/validate.h" 687 | "wx/palette.h" 688 | "wx/accel.h" 689 | "wx/access.h" 690 | "wx/msw/window.h" 691 | "wx/motif/window.h" 692 | "wx/gtk/window.h" 693 | "wx/gtk1/window.h" 694 | "wx/x11/window.h" 695 | "wx/dfb/window.h" 696 | "wx/osx/window.h" 697 | "wx/cocoa/window.h" 698 | "wx/os2/window.h" 699 | "wx/univ/window.h" 700 | 701 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\font.h 702 | "wx/defs.h" 703 | "wx/fontenc.h" 704 | "wx/gdiobj.h" 705 | "wx/gdicmn.h" 706 | "wx/msw/font.h" 707 | "wx/motif/font.h" 708 | "wx/gtk/font.h" 709 | "wx/gtk1/font.h" 710 | "wx/x11/font.h" 711 | "wx/dfb/font.h" 712 | "wx/osx/font.h" 713 | "wx/cocoa/font.h" 714 | "wx/os2/font.h" 715 | 716 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\font.h 717 | "wx/gdicmn.h" 718 | 719 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\font.h 720 | 721 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\font.h 722 | 723 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\font.h 724 | "wx/hash.h" 725 | 726 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\hash.h 727 | "wx/defs.h" 728 | "wx/string.h" 729 | "wx/object.h" 730 | 731 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\font.h 732 | 733 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\font.h 734 | "wx/dfb/dfbptr.h" 735 | 736 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\dfbptr.h 737 | 738 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\font.h 739 | 740 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\font.h 741 | 742 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\font.h 743 | "wx/gdiobj.h" 744 | "wx/os2/private.h" 745 | 746 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\colour.h 747 | "wx/defs.h" 748 | "wx/gdiobj.h" 749 | "wx/variant.h" 750 | "wx/msw/colour.h" 751 | "wx/motif/colour.h" 752 | "wx/gtk/colour.h" 753 | "wx/gtk1/colour.h" 754 | "wx/generic/colour.h" 755 | "wx/x11/colour.h" 756 | "wx/osx/colour.h" 757 | "wx/cocoa/colour.h" 758 | "wx/os2/colour.h" 759 | 760 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\colour.h 761 | "wx/object.h" 762 | 763 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\colour.h 764 | "wx/object.h" 765 | "wx/string.h" 766 | 767 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\colour.h 768 | 769 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\colour.h 770 | "wx/defs.h" 771 | "wx/object.h" 772 | "wx/string.h" 773 | "wx/gdiobj.h" 774 | "wx/palette.h" 775 | 776 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\palette.h 777 | "wx/defs.h" 778 | "wx/object.h" 779 | "wx/gdiobj.h" 780 | "wx/msw/palette.h" 781 | "wx/x11/palette.h" 782 | "wx/generic/paletteg.h" 783 | "wx/osx/palette.h" 784 | "wx/os2/palette.h" 785 | 786 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\palette.h 787 | "wx/gdiobj.h" 788 | 789 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\palette.h 790 | "wx/list.h" 791 | 792 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\paletteg.h 793 | "wx/defs.h" 794 | "wx/object.h" 795 | "wx/gdiobj.h" 796 | "wx/gdicmn.h" 797 | 798 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\palette.h 799 | "wx/gdiobj.h" 800 | 801 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\palette.h 802 | "wx/gdiobj.h" 803 | "wx/os2/private.h" 804 | 805 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\colour.h 806 | "wx/object.h" 807 | 808 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\colour.h 809 | "wx/defs.h" 810 | "wx/object.h" 811 | "wx/string.h" 812 | "wx/gdiobj.h" 813 | "wx/palette.h" 814 | 815 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\colour.h 816 | "wx/osx/core/colour.h" 817 | 818 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\core\colour.h 819 | "wx/object.h" 820 | "wx/string.h" 821 | "wx/osx/core/cfref.h" 822 | 823 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\core\cfref.h 824 | 825 | 826 | 827 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\colour.h 828 | "wx/object.h" 829 | "wx/string.h" 830 | 831 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\colour.h 832 | "wx/object.h" 833 | 834 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\region.h 835 | "wx/gdiobj.h" 836 | "wx/gdicmn.h" 837 | "wx/msw/region.h" 838 | "wx/gtk/region.h" 839 | "wx/gtk1/region.h" 840 | "wx/x11/region.h" 841 | "wx/dfb/region.h" 842 | "wx/osx/region.h" 843 | "wx/cocoa/region.h" 844 | "wx/os2/region.h" 845 | 846 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\region.h 847 | 848 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\region.h 849 | 850 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\region.h 851 | "wx/list.h" 852 | 853 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\region.h 854 | "wx/list.h" 855 | 856 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\region.h 857 | 858 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\region.h 859 | "wx/osx/carbon/region.h" 860 | "wx/generic/region.h" 861 | 862 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\carbon\region.h 863 | "wx/list.h" 864 | 865 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\region.h 866 | 867 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\region.h 868 | "wx/generic/region.h" 869 | 870 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\region.h 871 | "wx/list.h" 872 | "wx/os2/private.h" 873 | 874 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\utils.h 875 | "wx/object.h" 876 | "wx/list.h" 877 | "wx/filefn.h" 878 | "wx/hashmap.h" 879 | "wx/versioninfo.h" 880 | "wx/meta/implicitconversion.h" 881 | "wx/gdicmn.h" 882 | "wx/mousestate.h" 883 | "wx/longlong.h" 884 | "wx/platinfo.h" 885 | 886 | 887 | 888 | 889 | 890 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\versioninfo.h 891 | "wx/string.h" 892 | 893 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\meta\implicitconversion.h 894 | "wx/defs.h" 895 | "wx/meta/if.h" 896 | 897 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\mousestate.h 898 | "wx/gdicmn.h" 899 | "wx/kbdstate.h" 900 | 901 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\kbdstate.h 902 | "wx/defs.h" 903 | 904 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\platinfo.h 905 | "wx/string.h" 906 | 907 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\validate.h 908 | "wx/defs.h" 909 | "wx/event.h" 910 | 911 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\accel.h 912 | "wx/defs.h" 913 | "wx/object.h" 914 | "wx/generic/accel.h" 915 | "wx/msw/accel.h" 916 | "wx/motif/accel.h" 917 | "wx/gtk/accel.h" 918 | "wx/gtk1/accel.h" 919 | "wx/osx/accel.h" 920 | "wx/generic/accel.h" 921 | "wx/os2/accel.h" 922 | 923 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\accel.h 924 | 925 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\accel.h 926 | 927 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\accel.h 928 | "wx/object.h" 929 | "wx/string.h" 930 | "wx/event.h" 931 | 932 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\accel.h 933 | "wx/generic/accel.h" 934 | 935 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\accel.h 936 | "wx/generic/accel.h" 937 | 938 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\accel.h 939 | "wx/string.h" 940 | "wx/event.h" 941 | 942 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\accel.h 943 | "wx/object.h" 944 | 945 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\access.h 946 | "wx/defs.h" 947 | "wx/variant.h" 948 | "wx/msw/ole/access.h" 949 | 950 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\ole\access.h 951 | 952 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\window.h 953 | "wx/settings.h" 954 | 955 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\settings.h 956 | "wx/colour.h" 957 | "wx/font.h" 958 | 959 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\window.h 960 | "wx/region.h" 961 | 962 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\window.h 963 | "wx/dynarray.h" 964 | 965 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\window.h 966 | 967 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\window.h 968 | "wx/region.h" 969 | 970 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\window.h 971 | "wx/dfb/dfbptr.h" 972 | 973 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\window.h 974 | "wx/brush.h" 975 | "wx/dc.h" 976 | 977 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\brush.h 978 | "wx/defs.h" 979 | "wx/object.h" 980 | "wx/gdiobj.h" 981 | "wx/gdicmn.h" 982 | "wx/msw/brush.h" 983 | "wx/x11/brush.h" 984 | "wx/gtk/brush.h" 985 | "wx/gtk1/brush.h" 986 | "wx/dfb/brush.h" 987 | "wx/osx/brush.h" 988 | "wx/cocoa/brush.h" 989 | "wx/os2/brush.h" 990 | 991 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\brush.h 992 | 993 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\brush.h 994 | "wx/gdiobj.h" 995 | 996 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\brush.h 997 | 998 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\brush.h 999 | "wx/defs.h" 1000 | "wx/object.h" 1001 | "wx/string.h" 1002 | "wx/gdiobj.h" 1003 | "wx/bitmap.h" 1004 | 1005 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\bitmap.h 1006 | "wx/string.h" 1007 | "wx/gdicmn.h" 1008 | "wx/colour.h" 1009 | "wx/image.h" 1010 | "wx/variant.h" 1011 | "wx/msw/bitmap.h" 1012 | "wx/x11/bitmap.h" 1013 | "wx/gtk/bitmap.h" 1014 | "wx/gtk1/bitmap.h" 1015 | "wx/x11/bitmap.h" 1016 | "wx/dfb/bitmap.h" 1017 | "wx/osx/bitmap.h" 1018 | "wx/cocoa/bitmap.h" 1019 | "wx/os2/bitmap.h" 1020 | "wx/generic/mask.h" 1021 | 1022 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\bitmap.h 1023 | "wx/msw/gdiimage.h" 1024 | "wx/math.h" 1025 | "wx/palette.h" 1026 | 1027 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\bitmap.h 1028 | "wx/defs.h" 1029 | "wx/object.h" 1030 | "wx/string.h" 1031 | "wx/palette.h" 1032 | "wx/gdiobj.h" 1033 | 1034 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\bitmap.h 1035 | 1036 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\bitmap.h 1037 | "wx/defs.h" 1038 | "wx/object.h" 1039 | "wx/string.h" 1040 | "wx/palette.h" 1041 | "wx/gdiobj.h" 1042 | 1043 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\bitmap.h 1044 | "wx/dfb/dfbptr.h" 1045 | 1046 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\bitmap.h 1047 | "wx/palette.h" 1048 | 1049 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\bitmap.h 1050 | "wx/palette.h" 1051 | 1052 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\bitmap.h 1053 | "wx/os2/private.h" 1054 | "wx/os2/gdiimage.h" 1055 | "wx/gdicmn.h" 1056 | "wx/palette.h" 1057 | 1058 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\gdiimage.h 1059 | "wx/gdiobj.h" 1060 | "wx/gdicmn.h" 1061 | "wx/list.h" 1062 | 1063 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\mask.h 1064 | 1065 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\brush.h 1066 | "wx/defs.h" 1067 | "wx/object.h" 1068 | "wx/string.h" 1069 | "wx/gdiobj.h" 1070 | "wx/bitmap.h" 1071 | 1072 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\brush.h 1073 | "wx/gdicmn.h" 1074 | "wx/gdiobj.h" 1075 | "wx/bitmap.h" 1076 | 1077 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\brush.h 1078 | "wx/gdicmn.h" 1079 | "wx/gdiobj.h" 1080 | "wx/bitmap.h" 1081 | 1082 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\brush.h 1083 | "wx/bitmap.h" 1084 | 1085 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dc.h 1086 | "wx/object.h" 1087 | "wx/intl.h" 1088 | "wx/cursor.h" 1089 | "wx/font.h" 1090 | "wx/colour.h" 1091 | "wx/bitmap.h" 1092 | "wx/brush.h" 1093 | "wx/pen.h" 1094 | "wx/palette.h" 1095 | "wx/dynarray.h" 1096 | "wx/math.h" 1097 | "wx/image.h" 1098 | "wx/region.h" 1099 | "wx/affinematrix2d.h" 1100 | 1101 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\pen.h 1102 | "wx/gdiobj.h" 1103 | "wx/gdicmn.h" 1104 | "wx/msw/pen.h" 1105 | "wx/x11/pen.h" 1106 | "wx/gtk/pen.h" 1107 | "wx/gtk1/pen.h" 1108 | "wx/dfb/pen.h" 1109 | "wx/osx/pen.h" 1110 | "wx/cocoa/pen.h" 1111 | "wx/os2/pen.h" 1112 | 1113 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\pen.h 1114 | "wx/gdiobj.h" 1115 | "wx/gdicmn.h" 1116 | 1117 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\pen.h 1118 | "wx/gdicmn.h" 1119 | "wx/gdiobj.h" 1120 | 1121 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\pen.h 1122 | 1123 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\pen.h 1124 | "wx/defs.h" 1125 | "wx/object.h" 1126 | "wx/string.h" 1127 | "wx/gdiobj.h" 1128 | "wx/gdicmn.h" 1129 | 1130 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\pen.h 1131 | "wx/defs.h" 1132 | "wx/object.h" 1133 | "wx/string.h" 1134 | "wx/gdiobj.h" 1135 | "wx/gdicmn.h" 1136 | 1137 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\pen.h 1138 | "wx/gdiobj.h" 1139 | "wx/colour.h" 1140 | "wx/bitmap.h" 1141 | 1142 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\pen.h 1143 | "wx/gdiobj.h" 1144 | "wx/gdicmn.h" 1145 | 1146 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\pen.h 1147 | "wx/gdiobj.h" 1148 | "wx/bitmap.h" 1149 | 1150 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\affinematrix2d.h 1151 | "wx/defs.h" 1152 | "wx/affinematrix2dbase.h" 1153 | 1154 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\affinematrix2dbase.h 1155 | "wx/defs.h" 1156 | "wx/geometry.h" 1157 | 1158 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\geometry.h 1159 | "wx/defs.h" 1160 | "wx/utils.h" 1161 | "wx/gdicmn.h" 1162 | "wx/math.h" 1163 | 1164 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\window.h 1165 | "wx/cocoa/NSView.h" 1166 | 1167 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\nsview.h 1168 | "wx/hashmap.h" 1169 | "wx/cocoa/ObjcAssociate.h" 1170 | 1171 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\objcassociate.h 1172 | 1173 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\window.h 1174 | 1175 | "wx/hash.h" 1176 | 1177 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\window.h 1178 | "wx/bitmap.h" 1179 | 1180 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imagbmp.h 1181 | "wx/image.h" 1182 | 1183 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imagpng.h 1184 | "wx/defs.h" 1185 | "wx/image.h" 1186 | "wx/versioninfo.h" 1187 | 1188 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imaggif.h 1189 | "wx/image.h" 1190 | 1191 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imagpcx.h 1192 | "wx/image.h" 1193 | 1194 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imagjpeg.h 1195 | "wx/defs.h" 1196 | "wx/image.h" 1197 | "wx/versioninfo.h" 1198 | 1199 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imagtga.h 1200 | "wx/image.h" 1201 | 1202 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imagtiff.h 1203 | "wx/defs.h" 1204 | "wx/image.h" 1205 | "wx/versioninfo.h" 1206 | 1207 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imagpnm.h 1208 | "wx/image.h" 1209 | 1210 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imagxpm.h 1211 | "wx/image.h" 1212 | 1213 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imagiff.h 1214 | "wx/image.h" 1215 | 1216 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\cursor.h 1217 | "wx/gdiobj.h" 1218 | "wx/gdicmn.h" 1219 | "wx/colour.h" 1220 | 1221 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\cursor.h 1222 | "wx/gdiobj.h" 1223 | "wx/gdicmn.h" 1224 | 1225 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\cursor.h 1226 | "wx/bitmap.h" 1227 | 1228 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\cursor.h 1229 | "wx/bitmap.h" 1230 | 1231 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\cursor.h 1232 | "wx/bitmap.h" 1233 | 1234 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\tracker.h 1235 | "wx/defs.h" 1236 | 1237 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\meta\convertible.h 1238 | 1239 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\meta\removeref.h 1240 | 1241 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\eventfilter.h 1242 | "wx/defs.h" 1243 | 1244 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\build.h 1245 | "wx/version.h" 1246 | 1247 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cmdargs.h 1248 | "wx/arrstr.h" 1249 | 1250 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\init.h 1251 | "wx/defs.h" 1252 | "wx/chartype.h" 1253 | "wx/msw/init.h" 1254 | 1255 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\init.h 1256 | "wx/msw/wrapwin.h" 1257 | 1258 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\unix\app.h 1259 | 1260 | 1261 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\app.h 1262 | "wx/event.h" 1263 | "wx/icon.h" 1264 | 1265 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\icon.h 1266 | "wx/iconloc.h" 1267 | "wx/msw/icon.h" 1268 | "wx/motif/icon.h" 1269 | "wx/generic/icon.h" 1270 | "wx/generic/icon.h" 1271 | "wx/generic/icon.h" 1272 | "wx/generic/icon.h" 1273 | "wx/osx/icon.h" 1274 | "wx/generic/icon.h" 1275 | "wx/cocoa/icon.h" 1276 | "wx/os2/icon.h" 1277 | "wx/variant.h" 1278 | 1279 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\iconloc.h 1280 | "wx/string.h" 1281 | 1282 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\icon.h 1283 | "wx/msw/gdiimage.h" 1284 | 1285 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\icon.h 1286 | "wx/bitmap.h" 1287 | 1288 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\icon.h 1289 | "wx/bitmap.h" 1290 | 1291 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\icon.h 1292 | "wx/bitmap.h" 1293 | 1294 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\icon.h 1295 | "wx/gdicmn.h" 1296 | "wx/gdiobj.h" 1297 | 1298 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\icon.h 1299 | "wx/bitmap.h" 1300 | "wx/os2/gdiimage.h" 1301 | 1302 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\app.h 1303 | "wx/event.h" 1304 | "wx/hashmap.h" 1305 | 1306 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\app.h 1307 | "wx/dfb/dfbptr.h" 1308 | "wx/vidmode.h" 1309 | 1310 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\vidmode.h 1311 | 1312 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\app.h 1313 | 1314 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\app.h 1315 | "wx/frame.h" 1316 | "wx/icon.h" 1317 | "wx/strconv.h" 1318 | 1319 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\frame.h 1320 | "wx/toplevel.h" 1321 | "wx/statusbr.h" 1322 | "wx/univ/frame.h" 1323 | "wx/msw/frame.h" 1324 | "wx/gtk/frame.h" 1325 | "wx/gtk1/frame.h" 1326 | "wx/motif/frame.h" 1327 | "wx/osx/frame.h" 1328 | "wx/cocoa/frame.h" 1329 | "wx/os2/frame.h" 1330 | 1331 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\toplevel.h 1332 | "wx/nonownedwnd.h" 1333 | "wx/iconbndl.h" 1334 | "wx/weakref.h" 1335 | "wx/msw/toplevel.h" 1336 | "wx/gtk/toplevel.h" 1337 | "wx/gtk1/toplevel.h" 1338 | "wx/x11/toplevel.h" 1339 | "wx/dfb/toplevel.h" 1340 | "wx/osx/toplevel.h" 1341 | "wx/cocoa/toplevel.h" 1342 | "wx/os2/toplevel.h" 1343 | "wx/motif/toplevel.h" 1344 | "wx/univ/toplevel.h" 1345 | 1346 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\nonownedwnd.h 1347 | "wx/window.h" 1348 | "wx/dfb/nonownedwnd.h" 1349 | "wx/gtk/nonownedwnd.h" 1350 | "wx/osx/nonownedwnd.h" 1351 | "wx/msw/nonownedwnd.h" 1352 | 1353 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\nonownedwnd.h 1354 | "wx/window.h" 1355 | "wx/dfb/dfbptr.h" 1356 | 1357 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\nonownedwnd.h 1358 | 1359 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\nonownedwnd.h 1360 | "wx/window.h" 1361 | "wx/graphics.h" 1362 | 1363 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\graphics.h 1364 | "wx/defs.h" 1365 | "wx/geometry.h" 1366 | "wx/dynarray.h" 1367 | "wx/dc.h" 1368 | "wx/image.h" 1369 | "wx/vector.h" 1370 | 1371 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\nonownedwnd.h 1372 | 1373 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\iconbndl.h 1374 | "wx/gdiobj.h" 1375 | "wx/gdicmn.h" 1376 | "wx/icon.h" 1377 | "wx/dynarray.h" 1378 | 1379 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\weakref.h 1380 | "wx/tracker.h" 1381 | "wx/meta/convertible.h" 1382 | "wx/meta/int2type.h" 1383 | 1384 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\meta\int2type.h 1385 | 1386 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\toplevel.h 1387 | 1388 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\toplevel.h 1389 | 1390 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\toplevel.h 1391 | 1392 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\toplevel.h 1393 | 1394 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dfb\toplevel.h 1395 | 1396 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\toplevel.h 1397 | 1398 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\toplevel.h 1399 | "wx/hashmap.h" 1400 | "wx/cocoa/NSWindow.h" 1401 | 1402 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\nswindow.h 1403 | "wx/hashmap.h" 1404 | "wx/cocoa/ObjcAssociate.h" 1405 | 1406 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\toplevel.h 1407 | 1408 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\toplevel.h 1409 | 1410 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\toplevel.h 1411 | "wx/univ/inpcons.h" 1412 | "wx/univ/inphand.h" 1413 | "wx/icon.h" 1414 | 1415 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\inpcons.h 1416 | "wx/object.h" 1417 | "wx/event.h" 1418 | 1419 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\inphand.h 1420 | "wx/univ/inpcons.h" 1421 | 1422 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\statusbr.h 1423 | "wx/defs.h" 1424 | "wx/control.h" 1425 | "wx/list.h" 1426 | "wx/dynarray.h" 1427 | "wx/univ/statusbr.h" 1428 | "wx/msw/statusbar.h" 1429 | "wx/generic/statusbr.h" 1430 | "wx/osx/statusbr.h" 1431 | "wx/generic/statusbr.h" 1432 | 1433 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\control.h 1434 | "wx/defs.h" 1435 | "wx/window.h" 1436 | "wx/univ/control.h" 1437 | "wx/msw/control.h" 1438 | "wx/motif/control.h" 1439 | "wx/gtk/control.h" 1440 | "wx/gtk1/control.h" 1441 | "wx/osx/control.h" 1442 | "wx/cocoa/control.h" 1443 | "wx/os2/control.h" 1444 | 1445 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\control.h 1446 | "wx/univ/inphand.h" 1447 | "wx/univ/inpcons.h" 1448 | 1449 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\control.h 1450 | "wx/dynarray.h" 1451 | 1452 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\control.h 1453 | "wx/window.h" 1454 | "wx/list.h" 1455 | "wx/validate.h" 1456 | 1457 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\control.h 1458 | 1459 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\control.h 1460 | "wx/defs.h" 1461 | "wx/object.h" 1462 | "wx/list.h" 1463 | "wx/window.h" 1464 | 1465 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\control.h 1466 | 1467 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\control.h 1468 | "wx/cocoa/NSControl.h" 1469 | 1470 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\nscontrol.h 1471 | "wx/hashmap.h" 1472 | "wx/cocoa/ObjcAssociate.h" 1473 | 1474 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\control.h 1475 | "wx/dynarray.h" 1476 | 1477 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\statusbr.h 1478 | "wx/univ/inpcons.h" 1479 | "wx/arrstr.h" 1480 | 1481 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\statusbar.h 1482 | "wx/vector.h" 1483 | "wx/tooltip.h" 1484 | 1485 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\tooltip.h 1486 | "wx/defs.h" 1487 | "wx/msw/tooltip.h" 1488 | "wx/gtk/tooltip.h" 1489 | "wx/gtk1/tooltip.h" 1490 | "wx/osx/tooltip.h" 1491 | "wx/cocoa/tooltip.h" 1492 | "wx/os2/tooltip.h" 1493 | 1494 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\tooltip.h 1495 | "wx/object.h" 1496 | "wx/gdicmn.h" 1497 | 1498 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\tooltip.h 1499 | "wx/string.h" 1500 | "wx/object.h" 1501 | 1502 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\tooltip.h 1503 | "wx/defs.h" 1504 | "wx/string.h" 1505 | "wx/object.h" 1506 | 1507 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\tooltip.h 1508 | "wx/string.h" 1509 | "wx/event.h" 1510 | 1511 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\tooltip.h 1512 | "wx/object.h" 1513 | 1514 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\tooltip.h 1515 | 1516 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\statusbr.h 1517 | "wx/defs.h" 1518 | "wx/pen.h" 1519 | "wx/arrstr.h" 1520 | 1521 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\statusbr.h 1522 | 1523 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\frame.h 1524 | 1525 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\frame.h 1526 | 1527 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\frame.h 1528 | 1529 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\frame.h 1530 | 1531 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\frame.h 1532 | 1533 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\frame.h 1534 | "wx/toolbar.h" 1535 | "wx/accel.h" 1536 | "wx/icon.h" 1537 | 1538 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\toolbar.h 1539 | "wx/defs.h" 1540 | "wx/tbarbase.h" 1541 | "wx/univ/toolbar.h" 1542 | "wx/msw/toolbar.h" 1543 | "wx/msw/wince/tbarwce.h" 1544 | "wx/motif/toolbar.h" 1545 | "wx/gtk/toolbar.h" 1546 | "wx/gtk1/toolbar.h" 1547 | "wx/osx/toolbar.h" 1548 | "wx/cocoa/toolbar.h" 1549 | "wx/os2/toolbar.h" 1550 | 1551 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\tbarbase.h 1552 | "wx/defs.h" 1553 | "wx/bitmap.h" 1554 | "wx/list.h" 1555 | "wx/control.h" 1556 | 1557 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\toolbar.h 1558 | "wx/button.h" 1559 | 1560 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\button.h 1561 | "wx/defs.h" 1562 | "wx/anybutton.h" 1563 | "wx/univ/button.h" 1564 | "wx/msw/button.h" 1565 | "wx/motif/button.h" 1566 | "wx/gtk/button.h" 1567 | "wx/gtk1/button.h" 1568 | "wx/osx/button.h" 1569 | "wx/cocoa/button.h" 1570 | "wx/os2/button.h" 1571 | 1572 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\anybutton.h 1573 | "wx/defs.h" 1574 | "wx/bitmap.h" 1575 | "wx/control.h" 1576 | "wx/univ/anybutton.h" 1577 | "wx/msw/anybutton.h" 1578 | "wx/gtk/anybutton.h" 1579 | "wx/osx/anybutton.h" 1580 | 1581 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\anybutton.h 1582 | 1583 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\anybutton.h 1584 | 1585 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\anybutton.h 1586 | 1587 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\anybutton.h 1588 | 1589 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\button.h 1590 | "wx/bitmap.h" 1591 | 1592 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\button.h 1593 | 1594 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\button.h 1595 | 1596 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\button.h 1597 | 1598 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\button.h 1599 | "wx/defs.h" 1600 | "wx/object.h" 1601 | "wx/list.h" 1602 | 1603 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\button.h 1604 | "wx/control.h" 1605 | "wx/gdicmn.h" 1606 | 1607 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\button.h 1608 | "wx/cocoa/NSButton.h" 1609 | 1610 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\nsbutton.h 1611 | "wx/hashmap.h" 1612 | "wx/cocoa/ObjcAssociate.h" 1613 | "wx/cocoa/ObjcRef.h" 1614 | 1615 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\objcref.h 1616 | "wx/osx/core/cfref.h" 1617 | 1618 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\button.h 1619 | "wx/control.h" 1620 | 1621 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\toolbar.h 1622 | "wx/dynarray.h" 1623 | "wx/imaglist.h" 1624 | 1625 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\imaglist.h 1626 | "wx/defs.h" 1627 | "wx/generic/imaglist.h" 1628 | "wx/msw/imaglist.h" 1629 | "wx/osx/imaglist.h" 1630 | 1631 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\imaglist.h 1632 | "wx/list.h" 1633 | 1634 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\imaglist.h 1635 | "wx/bitmap.h" 1636 | 1637 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\imaglist.h 1638 | "wx/defs.h" 1639 | "wx/list.h" 1640 | "wx/icon.h" 1641 | 1642 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\tbarwce.h 1643 | "wx/dynarray.h" 1644 | "wx/msw/toolbar.h" 1645 | 1646 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\toolbar.h 1647 | 1648 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\toolbar.h 1649 | 1650 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\toolbar.h 1651 | 1652 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\toolbar.h 1653 | "wx/tbarbase.h" 1654 | "wx/dynarray.h" 1655 | 1656 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\toolbar.h 1657 | 1658 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\toolbar.h 1659 | "wx/timer.h" 1660 | "wx/tbarbase.h" 1661 | 1662 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\timer.h 1663 | "wx/defs.h" 1664 | "wx/object.h" 1665 | "wx/longlong.h" 1666 | "wx/event.h" 1667 | "wx/stopwatch.h" 1668 | "wx/utils.h" 1669 | 1670 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\stopwatch.h 1671 | "wx/defs.h" 1672 | "wx/longlong.h" 1673 | "wx/time.h" 1674 | 1675 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\time.h 1676 | "wx/longlong.h" 1677 | 1678 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\frame.h 1679 | 1680 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\frame.h 1681 | "wx/os2/wxrsc.h" 1682 | 1683 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\wxrsc.h 1684 | 1685 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\app.h 1686 | "wx/gdicmn.h" 1687 | "wx/event.h" 1688 | 1689 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\app.h 1690 | "wx/defs.h" 1691 | "wx/object.h" 1692 | "wx/gdicmn.h" 1693 | "wx/event.h" 1694 | 1695 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\app.h 1696 | "wx/osx/core/cfref.h" 1697 | 1698 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\app.h 1699 | 1700 | 1701 | 1702 | 1703 | 1704 | 1705 | 1706 | 1707 | "wx/event.h" 1708 | "wx/icon.h" 1709 | 1710 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\theme.h 1711 | "wx/string.h" 1712 | 1713 | 1557457785 e:\c_proj\tcp2com\tcp2commain.h 1714 | 1715 | 1716 | 1717 | 1718 | 1719 | 1720 | 1721 | 1722 | 1723 | "FrameObserver.h" 1724 | 1725 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\choice.h 1726 | "wx/defs.h" 1727 | "wx/ctrlsub.h" 1728 | "wx/univ/choice.h" 1729 | "wx/msw/wince/choicece.h" 1730 | "wx/msw/choice.h" 1731 | "wx/motif/choice.h" 1732 | "wx/gtk/choice.h" 1733 | "wx/gtk1/choice.h" 1734 | "wx/osx/choice.h" 1735 | "wx/cocoa/choice.h" 1736 | "wx/os2/choice.h" 1737 | 1738 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\ctrlsub.h 1739 | "wx/defs.h" 1740 | "wx/arrstr.h" 1741 | "wx/control.h" 1742 | "wx/msw/ctrlsub.h" 1743 | "wx/motif/ctrlsub.h" 1744 | 1745 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\ctrlsub.h 1746 | 1747 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\ctrlsub.h 1748 | "wx/dynarray.h" 1749 | "wx/generic/ctrlsub.h" 1750 | 1751 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\ctrlsub.h 1752 | "wx/dynarray.h" 1753 | 1754 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\choice.h 1755 | "wx/combobox.h" 1756 | 1757 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\combobox.h 1758 | "wx/defs.h" 1759 | "wx/textctrl.h" 1760 | "wx/ctrlsub.h" 1761 | "wx/textentry.h" 1762 | "wx/univ/combobox.h" 1763 | "wx/msw/combobox.h" 1764 | "wx/motif/combobox.h" 1765 | "wx/gtk/combobox.h" 1766 | "wx/gtk1/combobox.h" 1767 | "wx/osx/combobox.h" 1768 | "wx/cocoa/combobox.h" 1769 | "wx/os2/combobox.h" 1770 | 1771 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\textctrl.h 1772 | "wx/defs.h" 1773 | "wx/control.h" 1774 | "wx/textentry.h" 1775 | "wx/dynarray.h" 1776 | "wx/gdicmn.h" 1777 | "wx/ioswrap.h" 1778 | "wx/x11/textctrl.h" 1779 | "wx/univ/textctrl.h" 1780 | "wx/msw/wince/textctrlce.h" 1781 | "wx/msw/textctrl.h" 1782 | "wx/motif/textctrl.h" 1783 | "wx/gtk/textctrl.h" 1784 | "wx/gtk1/textctrl.h" 1785 | "wx/osx/textctrl.h" 1786 | "wx/cocoa/textctrl.h" 1787 | "wx/os2/textctrl.h" 1788 | 1789 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\textentry.h 1790 | "wx/filefn.h" 1791 | "wx/gdicmn.h" 1792 | "wx/gtk/textentry.h" 1793 | "wx/osx/textentry.h" 1794 | "wx/msw/textentry.h" 1795 | "wx/motif/textentry.h" 1796 | "wx/os2/textentry.h" 1797 | 1798 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\textentry.h 1799 | 1800 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\textentry.h 1801 | "wx/control.h" 1802 | 1803 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\textentry.h 1804 | 1805 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\textentry.h 1806 | 1807 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\textentry.h 1808 | 1809 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\ioswrap.h 1810 | "wx/beforestd.h" 1811 | 1812 | 1813 | "wx/afterstd.h" 1814 | "wx/msw/winundef.h" 1815 | 1816 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\x11\textctrl.h 1817 | "wx/univ/textctrl.h" 1818 | "wx/scrolwin.h" 1819 | "wx/arrstr.h" 1820 | 1821 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\textctrl.h 1822 | "wx/scrolwin.h" 1823 | "wx/univ/inphand.h" 1824 | 1825 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\scrolwin.h 1826 | "wx/panel.h" 1827 | "wx/gtk/scrolwin.h" 1828 | "wx/gtk1/scrolwin.h" 1829 | "wx/generic/scrolwin.h" 1830 | 1831 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\panel.h 1832 | "wx/window.h" 1833 | "wx/containr.h" 1834 | "wx/univ/panel.h" 1835 | "wx/msw/panel.h" 1836 | "wx/generic/panelg.h" 1837 | 1838 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\containr.h 1839 | "wx/defs.h" 1840 | "wx/event.h" 1841 | 1842 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\panel.h 1843 | 1844 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\panel.h 1845 | 1846 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\panelg.h 1847 | "wx/bitmap.h" 1848 | 1849 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\scrolwin.h 1850 | 1851 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\scrolwin.h 1852 | 1853 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\scrolwin.h 1854 | 1855 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\textctrlce.h 1856 | "wx/dynarray.h" 1857 | 1858 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\textctrl.h 1859 | 1860 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\textctrl.h 1861 | 1862 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\textctrl.h 1863 | 1864 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\textctrl.h 1865 | 1866 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\textctrl.h 1867 | "wx/control.h" 1868 | "wx/textctrl.h" 1869 | 1870 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\textctrl.h 1871 | "wx/cocoa/NSTextField.h" 1872 | 1873 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\nstextfield.h 1874 | "wx/hashmap.h" 1875 | "wx/cocoa/ObjcAssociate.h" 1876 | 1877 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\textctrl.h 1878 | 1879 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\combobox.h 1880 | "wx/combo.h" 1881 | 1882 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\combo.h 1883 | "wx/defs.h" 1884 | "wx/control.h" 1885 | "wx/renderer.h" 1886 | "wx/bitmap.h" 1887 | "wx/textentry.h" 1888 | "wx/msw/combo.h" 1889 | "wx/generic/combo.h" 1890 | 1891 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\renderer.h 1892 | "wx/gdicmn.h" 1893 | "wx/colour.h" 1894 | "wx/font.h" 1895 | "wx/bitmap.h" 1896 | "wx/string.h" 1897 | 1898 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\combo.h 1899 | "wx/timer.h" 1900 | 1901 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\combo.h 1902 | "wx/dcbuffer.h" 1903 | 1904 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dcbuffer.h 1905 | "wx/dcmemory.h" 1906 | "wx/dcclient.h" 1907 | "wx/window.h" 1908 | 1909 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dcmemory.h 1910 | "wx/dc.h" 1911 | "wx/bitmap.h" 1912 | 1913 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dcclient.h 1914 | "wx/dc.h" 1915 | 1916 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\combobox.h 1917 | "wx/choice.h" 1918 | "wx/textentry.h" 1919 | 1920 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\combobox.h 1921 | "wx/choice.h" 1922 | "wx/textentry.h" 1923 | 1924 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\combobox.h 1925 | "wx/choice.h" 1926 | 1927 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\combobox.h 1928 | "wx/defs.h" 1929 | "wx/object.h" 1930 | 1931 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\combobox.h 1932 | "wx/containr.h" 1933 | "wx/choice.h" 1934 | "wx/textctrl.h" 1935 | 1936 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\combobox.h 1937 | "wx/hashmap.h" 1938 | "wx/cocoa/ObjcAssociate.h" 1939 | "wx/textctrl.h" 1940 | "wx/dynarray.h" 1941 | 1942 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\combobox.h 1943 | "wx/choice.h" 1944 | "wx/textentry.h" 1945 | 1946 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\choicece.h 1947 | "wx/defs.h" 1948 | "wx/dynarray.h" 1949 | 1950 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\choice.h 1951 | 1952 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\choice.h 1953 | "wx/clntdata.h" 1954 | "wx/dynarray.h" 1955 | 1956 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\choice.h 1957 | 1958 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\choice.h 1959 | 1960 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\choice.h 1961 | "wx/control.h" 1962 | "wx/dynarray.h" 1963 | "wx/arrstr.h" 1964 | 1965 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\choice.h 1966 | "wx/cocoa/NSMenu.h" 1967 | 1968 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\nsmenu.h 1969 | "wx/hashmap.h" 1970 | "wx/cocoa/ObjcAssociate.h" 1971 | 1972 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\choice.h 1973 | 1974 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dialog.h 1975 | "wx/toplevel.h" 1976 | "wx/containr.h" 1977 | "wx/sharedptr.h" 1978 | "wx/univ/dialog.h" 1979 | "wx/msw/dialog.h" 1980 | "wx/motif/dialog.h" 1981 | "wx/gtk/dialog.h" 1982 | "wx/gtk1/dialog.h" 1983 | "wx/osx/dialog.h" 1984 | "wx/cocoa/dialog.h" 1985 | "wx/os2/dialog.h" 1986 | 1987 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\sharedptr.h 1988 | "wx/defs.h" 1989 | "wx/atomic.h" 1990 | 1991 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\atomic.h 1992 | "wx/defs.h" 1993 | "wx/msw/wrapwin.h" 1994 | "libkern/OSAtomic.h" 1995 | 1996 | "wx/thread.h" 1997 | 1998 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\dialog.h 1999 | 2000 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\dialog.h 2001 | "wx/panel.h" 2002 | 2003 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\dialog.h 2004 | 2005 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\dialog.h 2006 | 2007 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\dialog.h 2008 | 2009 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\dialog.h 2010 | "wx/panel.h" 2011 | 2012 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\dialog.h 2013 | "wx/defs.h" 2014 | "wx/panel.h" 2015 | "wx/cocoa/NSPanel.h" 2016 | 2017 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\nspanel.h 2018 | "wx/hashmap.h" 2019 | "wx/cocoa/ObjcAssociate.h" 2020 | 2021 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\dialog.h 2022 | "wx/panel.h" 2023 | 2024 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\sizer.h 2025 | "wx/defs.h" 2026 | "wx/window.h" 2027 | 2028 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\statline.h 2029 | "wx/defs.h" 2030 | "wx/control.h" 2031 | "wx/univ/statline.h" 2032 | "wx/msw/statline.h" 2033 | "wx/gtk/statline.h" 2034 | "wx/gtk1/statline.h" 2035 | "wx/os2/statline.h" 2036 | "wx/osx/statline.h" 2037 | "wx/cocoa/statline.h" 2038 | "wx/generic/statline.h" 2039 | 2040 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\statline.h 2041 | 2042 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\statline.h 2043 | 2044 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\statline.h 2045 | "wx/defs.h" 2046 | 2047 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\statline.h 2048 | "wx/defs.h" 2049 | 2050 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\statline.h 2051 | 2052 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\statline.h 2053 | 2054 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\statline.h 2055 | 2056 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\statline.h 2057 | 2058 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\stattext.h 2059 | "wx/defs.h" 2060 | "wx/control.h" 2061 | "wx/univ/stattext.h" 2062 | "wx/msw/stattext.h" 2063 | "wx/motif/stattext.h" 2064 | "wx/gtk/stattext.h" 2065 | "wx/gtk1/stattext.h" 2066 | "wx/osx/stattext.h" 2067 | "wx/cocoa/stattext.h" 2068 | "wx/os2/stattext.h" 2069 | 2070 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\stattext.h 2071 | "wx/generic/stattextg.h" 2072 | 2073 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\stattextg.h 2074 | "wx/stattext.h" 2075 | 2076 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\stattext.h 2077 | 2078 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\stattext.h 2079 | 2080 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\stattext.h 2081 | 2082 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\stattext.h 2083 | 2084 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\stattext.h 2085 | 2086 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\stattext.h 2087 | "wx/cocoa/NSTextField.h" 2088 | 2089 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\stattext.h 2090 | "wx/control.h" 2091 | 2092 | 1557467874 source:e:\c_proj\tcp2com\tcp2commain.cpp 2093 | "TCP2COMMain.h" 2094 | 2095 | 2096 | 2097 | "FactoryPreset.h" 2098 | "VirtualCom.h" 2099 | "NetCommService.h" 2100 | "SerialCommService.h" 2101 | 2102 | 2103 | 2104 | 2105 | 2106 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msgdlg.h 2107 | "wx/defs.h" 2108 | "wx/dialog.h" 2109 | "wx/stockitem.h" 2110 | "wx/generic/msgdlgg.h" 2111 | "wx/cocoa/msgdlg.h" 2112 | "wx/msw/msgdlg.h" 2113 | "wx/motif/msgdlg.h" 2114 | "wx/gtk/msgdlg.h" 2115 | "wx/osx/msgdlg.h" 2116 | "wx/os2/msgdlg.h" 2117 | 2118 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\stockitem.h 2119 | "wx/defs.h" 2120 | "wx/chartype.h" 2121 | "wx/string.h" 2122 | "wx/accel.h" 2123 | 2124 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\msgdlgg.h 2125 | 2126 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\msgdlg.h 2127 | "wx/msgdlg.h" 2128 | "wx/generic/msgdlgg.h" 2129 | 2130 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\msgdlg.h 2131 | 2132 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\msgdlg.h 2133 | 2134 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\msgdlg.h 2135 | 2136 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\msgdlg.h 2137 | 2138 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\msgdlg.h 2139 | 2140 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\statbmp.h 2141 | "wx/defs.h" 2142 | "wx/control.h" 2143 | "wx/bitmap.h" 2144 | "wx/icon.h" 2145 | "wx/univ/statbmp.h" 2146 | "wx/msw/statbmp.h" 2147 | "wx/motif/statbmp.h" 2148 | "wx/gtk/statbmp.h" 2149 | "wx/gtk1/statbmp.h" 2150 | "wx/osx/statbmp.h" 2151 | "wx/cocoa/statbmp.h" 2152 | "wx/os2/statbmp.h" 2153 | 2154 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\statbmp.h 2155 | "wx/bitmap.h" 2156 | 2157 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\statbmp.h 2158 | "wx/control.h" 2159 | "wx/icon.h" 2160 | "wx/bitmap.h" 2161 | 2162 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\statbmp.h 2163 | "wx/motif/bmpmotif.h" 2164 | "wx/icon.h" 2165 | 2166 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\bmpmotif.h 2167 | "wx/defs.h" 2168 | "wx/bitmap.h" 2169 | 2170 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\statbmp.h 2171 | "wx/icon.h" 2172 | 2173 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\statbmp.h 2174 | "wx/icon.h" 2175 | 2176 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\statbmp.h 2177 | "wx/osx/carbon/statbmp.h" 2178 | "wx/generic/statbmpg.h" 2179 | 2180 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\carbon\statbmp.h 2181 | "wx/icon.h" 2182 | 2183 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\generic\statbmpg.h 2184 | "wx/statbmp.h" 2185 | 2186 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\statbmp.h 2187 | 2188 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\statbmp.h 2189 | "wx/control.h" 2190 | "wx/icon.h" 2191 | 2192 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\checklst.h 2193 | "wx/defs.h" 2194 | "wx/listbox.h" 2195 | "wx/univ/checklst.h" 2196 | "wx/msw/wince/checklst.h" 2197 | "wx/msw/checklst.h" 2198 | "wx/motif/checklst.h" 2199 | "wx/gtk/checklst.h" 2200 | "wx/gtk1/checklst.h" 2201 | "wx/osx/checklst.h" 2202 | "wx/cocoa/checklst.h" 2203 | "wx/os2/checklst.h" 2204 | 2205 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\listbox.h 2206 | "wx/defs.h" 2207 | "wx/ctrlsub.h" 2208 | "wx/univ/listbox.h" 2209 | "wx/msw/listbox.h" 2210 | "wx/motif/listbox.h" 2211 | "wx/gtk/listbox.h" 2212 | "wx/gtk1/listbox.h" 2213 | "wx/osx/listbox.h" 2214 | "wx/os2/listbox.h" 2215 | "wx/cocoa/listbox.h" 2216 | 2217 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\listbox.h 2218 | "wx/scrolwin.h" 2219 | "wx/dynarray.h" 2220 | "wx/arrstr.h" 2221 | 2222 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\listbox.h 2223 | "wx/dynarray.h" 2224 | 2225 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\listbox.h 2226 | "wx/ctrlsub.h" 2227 | "wx/clntdata.h" 2228 | 2229 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\listbox.h 2230 | 2231 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\listbox.h 2232 | "wx/list.h" 2233 | 2234 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\listbox.h 2235 | "wx/dynarray.h" 2236 | "wx/arrstr.h" 2237 | 2238 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\listbox.h 2239 | "wx/dynarray.h" 2240 | 2241 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\listbox.h 2242 | "wx/cocoa/NSTableView.h" 2243 | "wx/dynarray.h" 2244 | 2245 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\nstableview.h 2246 | "wx/hashmap.h" 2247 | "wx/cocoa/ObjcAssociate.h" 2248 | 2249 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\univ\checklst.h 2250 | 2251 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\wince\checklst.h 2252 | 2253 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\checklst.h 2254 | 2255 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\motif\checklst.h 2256 | "wx/listbox.h" 2257 | 2258 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk\checklst.h 2259 | 2260 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\gtk1\checklst.h 2261 | 2262 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\checklst.h 2263 | 2264 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\cocoa\checklst.h 2265 | 2266 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\checklst.h 2267 | 2268 | "wx/defs.h" 2269 | 2270 | 1557384337 source:e:\c_proj\tcp2com\src\factorypreset.cpp 2271 | "FactoryPreset.h" 2272 | 2273 | 2274 | 2275 | 2276 | 2277 | 2278 | 2279 | 1557282350 e:\c_proj\tcp2com\include\factorypreset.h 2280 | 2281 | 2282 | 2283 | 2284 | 2285 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\filename.h 2286 | "wx/arrstr.h" 2287 | "wx/filefn.h" 2288 | "wx/datetime.h" 2289 | "wx/intl.h" 2290 | "wx/longlong.h" 2291 | "wx/file.h" 2292 | 2293 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\file.h 2294 | "wx/defs.h" 2295 | "wx/string.h" 2296 | "wx/filefn.h" 2297 | "wx/convauto.h" 2298 | 2299 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\convauto.h 2300 | "wx/strconv.h" 2301 | "wx/fontenc.h" 2302 | 2303 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\fileconf.h 2304 | "wx/defs.h" 2305 | "wx/textfile.h" 2306 | "wx/string.h" 2307 | "wx/confbase.h" 2308 | "wx/filename.h" 2309 | 2310 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\textfile.h 2311 | "wx/defs.h" 2312 | "wx/textbuf.h" 2313 | "wx/file.h" 2314 | 2315 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\textbuf.h 2316 | "wx/defs.h" 2317 | "wx/arrstr.h" 2318 | "wx/convauto.h" 2319 | "wx/string.h" 2320 | "wx/dynarray.h" 2321 | 2322 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\confbase.h 2323 | "wx/defs.h" 2324 | "wx/string.h" 2325 | "wx/object.h" 2326 | "wx/base64.h" 2327 | 2328 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\base64.h 2329 | "wx/string.h" 2330 | "wx/buffer.h" 2331 | 2332 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\stdpaths.h 2333 | "wx/defs.h" 2334 | "wx/string.h" 2335 | "wx/filefn.h" 2336 | "wx/msw/stdpaths.h" 2337 | "wx/osx/core/stdpaths.h" 2338 | "wx/os2/stdpaths.h" 2339 | "wx/unix/stdpaths.h" 2340 | 2341 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\msw\stdpaths.h 2342 | 2343 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\osx\core\stdpaths.h 2344 | "wx/unix/stdpaths.h" 2345 | 2346 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\unix\stdpaths.h 2347 | 2348 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\os2\stdpaths.h 2349 | 2350 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\wfstream.h 2351 | "wx/defs.h" 2352 | "wx/object.h" 2353 | "wx/string.h" 2354 | "wx/stream.h" 2355 | "wx/file.h" 2356 | "wx/ffile.h" 2357 | 2358 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\ffile.h 2359 | "wx/defs.h" 2360 | "wx/string.h" 2361 | "wx/filefn.h" 2362 | "wx/convauto.h" 2363 | 2364 | 2365 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\dir.h 2366 | "wx/longlong.h" 2367 | "wx/string.h" 2368 | "wx/filefn.h" 2369 | 2370 | 1557279576 source:e:\c_proj\tcp2com\src\virtualcom.cpp 2371 | "VirtualCom.h" 2372 | "FactoryPreset.h" 2373 | 2374 | 2375 | 2376 | 2377 | 2378 | 2379 | 1557279357 e:\c_proj\tcp2com\include\virtualcom.h 2380 | 2381 | 2382 | 2383 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\tokenzr.h 2384 | "wx/object.h" 2385 | "wx/string.h" 2386 | "wx/arrstr.h" 2387 | 2388 | 1557379358 source:e:\c_proj\tcp2com\src\commlistenerbase.cpp 2389 | "CommListenerBase.h" 2390 | 2391 | 1557381037 e:\c_proj\tcp2com\include\commlistenerbase.h 2392 | 2393 | 2394 | 1557386528 source:e:\c_proj\tcp2com\src\commservicebase.cpp 2395 | "CommServiceBase.h" 2396 | 2397 | 1557386036 e:\c_proj\tcp2com\include\commservicebase.h 2398 | "CommListenerBase.h" 2399 | "FrameObserver.h" 2400 | 2401 | 2402 | 2403 | 1557379982 e:\c_proj\tcp2com\include\frameobserver.h 2404 | 2405 | 2406 | 1557467451 source:e:\c_proj\tcp2com\src\tcpserverlistener.cpp 2407 | "TCPServerListener.h" 2408 | "NetCommService.h" 2409 | 2410 | 1557389947 e:\c_proj\tcp2com\include\tcpserverlistener.h 2411 | 2412 | 2413 | 2414 | 2415 | 2416 | "CommListenerBase.h" 2417 | 2418 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\socket.h 2419 | "wx/defs.h" 2420 | "wx/event.h" 2421 | "wx/sckaddr.h" 2422 | "wx/list.h" 2423 | 2424 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\sckaddr.h 2425 | "wx/defs.h" 2426 | "wx/string.h" 2427 | 2428 | 1520441738 d:\dev_lib\c\wxwidgets\include\wx\sckstrm.h 2429 | "wx/stream.h" 2430 | "wx/socket.h" 2431 | 2432 | 1557467397 source:e:\c_proj\tcp2com\src\netcommservice.cpp 2433 | "NetCommService.h" 2434 | "FactoryPreset.h" 2435 | "TCPServerListener.h" 2436 | 2437 | 1557449479 e:\c_proj\tcp2com\include\netcommservice.h 2438 | "CommServiceBase.h" 2439 | 2440 | 2441 | 2442 | 2443 | 2444 | 1557458613 source:e:\c_proj\tcp2com\src\serialcommservice.cpp 2445 | "SerialCommService.h" 2446 | "SerialPortListener.h" 2447 | "FactoryPreset.h" 2448 | 2449 | 1557382057 e:\c_proj\tcp2com\include\serialcommservice.h 2450 | 2451 | 2452 | 2453 | "CommServiceBase.h" 2454 | 2455 | 2456 | 1557388918 source:e:\c_proj\tcp2com\src\serialportlistener.cpp 2457 | "SerialPortListener.h" 2458 | "SerialCommService.h" 2459 | "FactoryPreset.h" 2460 | 2461 | 1557387953 e:\c_proj\tcp2com\include\serialportlistener.h 2462 | 2463 | 2464 | 2465 | 2466 | "CommListenerBase.h" 2467 | 2468 | -------------------------------------------------------------------------------- /TCP2COM.layout: -------------------------------------------------------------------------------- 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 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /TCP2COMApp.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************** 2 | * Name: TCP2COMApp.cpp 3 | * Purpose: Code for Application Class 4 | * Author: David (lw.7@foxmail.com) 5 | * Created: 2019-05-07 6 | * Copyright: David () 7 | * License: 8 | **************************************************************/ 9 | 10 | #include "TCP2COMApp.h" 11 | 12 | //(*AppHeaders 13 | #include "TCP2COMMain.h" 14 | #include 15 | //*) 16 | 17 | IMPLEMENT_APP(TCP2COMApp); 18 | 19 | bool TCP2COMApp::OnInit() 20 | { 21 | //(*AppInitialize 22 | bool wxsOK = true; 23 | wxInitAllImageHandlers(); 24 | if ( wxsOK ) 25 | { 26 | TCP2COMDialog Dlg(0); 27 | SetTopWindow(&Dlg); 28 | Dlg.ShowModal(); 29 | wxsOK = false; 30 | } 31 | //*) 32 | return wxsOK; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /TCP2COMApp.h: -------------------------------------------------------------------------------- 1 | /*************************************************************** 2 | * Name: TCP2COMApp.h 3 | * Purpose: Defines Application Class 4 | * Author: David (lw.7@foxmail.com) 5 | * Created: 2019-05-07 6 | * Copyright: David () 7 | * License: 8 | **************************************************************/ 9 | 10 | #ifndef TCP2COMAPP_H 11 | #define TCP2COMAPP_H 12 | 13 | #include 14 | 15 | class TCP2COMApp : public wxApp 16 | { 17 | public: 18 | virtual bool OnInit(); 19 | }; 20 | 21 | #endif // TCP2COMAPP_H 22 | -------------------------------------------------------------------------------- /TCP2COMMain.cpp: -------------------------------------------------------------------------------- 1 | /*************************************************************** 2 | * Name: TCP2COMMain.cpp 3 | * Purpose: Code for Application Frame 4 | * Author: David (lw.7@foxmail.com) 5 | * Created: 2019-05-07 6 | * Copyright: David () 7 | * License: 8 | **************************************************************/ 9 | 10 | #include "TCP2COMMain.h" 11 | #include 12 | #include 13 | #include 14 | 15 | #include "FactoryPreset.h" 16 | #include "VirtualCom.h" 17 | #include "NetCommService.h" 18 | #include "SerialCommService.h" 19 | 20 | //(*InternalHeaders(TCP2COMDialog) 21 | #include 22 | #include 23 | #include 24 | #include 25 | //*) 26 | 27 | //helper functions 28 | enum wxbuildinfoformat { 29 | short_f, long_f }; 30 | 31 | using namespace std; 32 | 33 | wxString wxbuildinfo(wxbuildinfoformat format) 34 | { 35 | wxString wxbuild(wxVERSION_STRING); 36 | 37 | if (format == long_f ) 38 | { 39 | #if defined(__WXMSW__) 40 | wxbuild << _T("-Windows"); 41 | #elif defined(__UNIX__) 42 | wxbuild << _T("-Linux"); 43 | #endif 44 | 45 | #if wxUSE_UNICODE 46 | wxbuild << _T("-Unicode build"); 47 | #else 48 | wxbuild << _T("-ANSI build"); 49 | #endif // wxUSE_UNICODE 50 | } 51 | 52 | return wxbuild; 53 | } 54 | 55 | //(*IdInit(TCP2COMDialog) 56 | const long TCP2COMDialog::ID_STATICTEXT1 = wxNewId(); 57 | const long TCP2COMDialog::ID_STATICTEXT2 = wxNewId(); 58 | const long TCP2COMDialog::ID_TEXTCTRL1 = wxNewId(); 59 | const long TCP2COMDialog::ID_STATICTEXT3 = wxNewId(); 60 | const long TCP2COMDialog::ID_TEXTCTRL2 = wxNewId(); 61 | const long TCP2COMDialog::ID_STATICLINE1 = wxNewId(); 62 | const long TCP2COMDialog::ID_STATICTEXT9 = wxNewId(); 63 | const long TCP2COMDialog::ID_CHOICE2 = wxNewId(); 64 | const long TCP2COMDialog::ID_STATICTEXT10 = wxNewId(); 65 | const long TCP2COMDialog::ID_CHOICE3 = wxNewId(); 66 | const long TCP2COMDialog::ID_STATICTEXT11 = wxNewId(); 67 | const long TCP2COMDialog::ID_CHOICE4 = wxNewId(); 68 | const long TCP2COMDialog::ID_STATICTEXT12 = wxNewId(); 69 | const long TCP2COMDialog::ID_CHOICE5 = wxNewId(); 70 | const long TCP2COMDialog::ID_BUTTON1 = wxNewId(); 71 | const long TCP2COMDialog::ID_BUTTON2 = wxNewId(); 72 | const long TCP2COMDialog::ID_STATICTEXT6 = wxNewId(); 73 | const long TCP2COMDialog::ID_STATICLINE3 = wxNewId(); 74 | const long TCP2COMDialog::ID_STATICTEXT7 = wxNewId(); 75 | const long TCP2COMDialog::ID_STATICLINE2 = wxNewId(); 76 | const long TCP2COMDialog::ID_STATICTEXT5 = wxNewId(); 77 | const long TCP2COMDialog::ID_LISTBOX1 = wxNewId(); 78 | const long TCP2COMDialog::ID_TEXTCTRL3 = wxNewId(); 79 | const long TCP2COMDialog::ID_STATICTEXT8 = wxNewId(); 80 | const long TCP2COMDialog::ID_TEXTCTRL4 = wxNewId(); 81 | const long TCP2COMDialog::ID_BUTTON3 = wxNewId(); 82 | const long TCP2COMDialog::ID_BUTTON4 = wxNewId(); 83 | const long TCP2COMDialog::ID_BUTTON5 = wxNewId(); 84 | const long TCP2COMDialog::ID_BUTTON6 = wxNewId(); 85 | const long TCP2COMDialog::ID_TIMER1 = wxNewId(); 86 | //*) 87 | 88 | BEGIN_EVENT_TABLE(TCP2COMDialog,wxDialog) 89 | //(*EventTable(TCP2COMDialog) 90 | //*) 91 | END_EVENT_TABLE() 92 | 93 | TCP2COMDialog::TCP2COMDialog(wxWindow* parent,wxWindowID id) 94 | { 95 | //(*Initialize(TCP2COMDialog) 96 | wxBoxSizer* BoxSizer2; 97 | wxBoxSizer* BoxSizer3; 98 | wxBoxSizer* BoxSizer4; 99 | wxBoxSizer* BoxSizer5; 100 | wxFlexGridSizer* FlexGridSizer1; 101 | wxFlexGridSizer* FlexGridSizer3; 102 | 103 | Create(parent, id, _("网络转串口"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, _T("id")); 104 | SetClientSize(wxSize(300,500)); 105 | SetBackgroundColour(wxColour(147,214,242)); 106 | BoxSizer1 = new wxBoxSizer(wxVERTICAL); 107 | BoxSizer1->Add(91,12,0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 108 | StaticText1 = new wxStaticText(this, ID_STATICTEXT1, _("TCP Server"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1")); 109 | StaticText1->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT)); 110 | wxFont StaticText1Font(16,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("黑体"),wxFONTENCODING_DEFAULT); 111 | StaticText1->SetFont(StaticText1Font); 112 | BoxSizer1->Add(StaticText1, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 113 | FlexGridSizer1 = new wxFlexGridSizer(0, 2, 0, 0); 114 | FlexGridSizer1->AddGrowableCol(0); 115 | FlexGridSizer1->AddGrowableCol(1); 116 | StaticText2 = new wxStaticText(this, ID_STATICTEXT2, _("主机:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT2")); 117 | wxFont StaticText2Font(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("黑体"),wxFONTENCODING_DEFAULT); 118 | StaticText2->SetFont(StaticText2Font); 119 | FlexGridSizer1->Add(StaticText2, 0, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5); 120 | txtHost = new wxTextCtrl(this, ID_TEXTCTRL1, wxEmptyString, wxDefaultPosition, wxSize(150,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL1")); 121 | FlexGridSizer1->Add(txtHost, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5); 122 | StaticText3 = new wxStaticText(this, ID_STATICTEXT3, _("端口:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT3")); 123 | wxFont StaticText3Font(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("黑体"),wxFONTENCODING_DEFAULT); 124 | StaticText3->SetFont(StaticText3Font); 125 | FlexGridSizer1->Add(StaticText3, 0, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5); 126 | txtPort = new wxTextCtrl(this, ID_TEXTCTRL2, wxEmptyString, wxDefaultPosition, wxSize(150,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL2")); 127 | FlexGridSizer1->Add(txtPort, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5); 128 | BoxSizer1->Add(FlexGridSizer1, 0, wxALL|wxEXPAND, 5); 129 | StaticLine1 = new wxStaticLine(this, ID_STATICLINE1, wxDefaultPosition, wxSize(10,3), wxLI_HORIZONTAL, _T("ID_STATICLINE1")); 130 | BoxSizer1->Add(StaticLine1, 0, wxALL|wxEXPAND, 5); 131 | FlexGridSizer3 = new wxFlexGridSizer(0, 4, 0, 0); 132 | StaticText9 = new wxStaticText(this, ID_STATICTEXT9, _("串口:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT9")); 133 | wxFont StaticText9Font(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("黑体"),wxFONTENCODING_DEFAULT); 134 | StaticText9->SetFont(StaticText9Font); 135 | FlexGridSizer3->Add(StaticText9, 1, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5); 136 | cmbComport = new wxChoice(this, ID_CHOICE2, wxDefaultPosition, wxSize(70,22), 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE2")); 137 | cmbComport->Append(_("COM10")); 138 | cmbComport->Append(_("COM11")); 139 | FlexGridSizer3->Add(cmbComport, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5); 140 | StaticText10 = new wxStaticText(this, ID_STATICTEXT10, _("波特率:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT10")); 141 | wxFont StaticText10Font(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("黑体"),wxFONTENCODING_DEFAULT); 142 | StaticText10->SetFont(StaticText10Font); 143 | FlexGridSizer3->Add(StaticText10, 1, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5); 144 | cmbBaudrate = new wxChoice(this, ID_CHOICE3, wxDefaultPosition, wxSize(70,22), 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE3")); 145 | cmbBaudrate->Append(_("300")); 146 | cmbBaudrate->Append(_("600")); 147 | cmbBaudrate->Append(_("1200")); 148 | cmbBaudrate->Append(_("2400")); 149 | cmbBaudrate->Append(_("4800")); 150 | cmbBaudrate->SetSelection( cmbBaudrate->Append(_("9600")) ); 151 | cmbBaudrate->Append(_("19200")); 152 | cmbBaudrate->Append(_("38400")); 153 | cmbBaudrate->Append(_("43000")); 154 | cmbBaudrate->Append(_("56000")); 155 | cmbBaudrate->Append(_("57600")); 156 | cmbBaudrate->Append(_("115200")); 157 | FlexGridSizer3->Add(cmbBaudrate, 1, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5); 158 | StaticText11 = new wxStaticText(this, ID_STATICTEXT11, _("数据位:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT11")); 159 | wxFont StaticText11Font(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("黑体"),wxFONTENCODING_DEFAULT); 160 | StaticText11->SetFont(StaticText11Font); 161 | FlexGridSizer3->Add(StaticText11, 1, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5); 162 | cmbDatabits = new wxChoice(this, ID_CHOICE4, wxDefaultPosition, wxSize(70,22), 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE4")); 163 | cmbDatabits->Append(_("6")); 164 | cmbDatabits->Append(_("7")); 165 | cmbDatabits->SetSelection( cmbDatabits->Append(_("8")) ); 166 | FlexGridSizer3->Add(cmbDatabits, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5); 167 | StaticText12 = new wxStaticText(this, ID_STATICTEXT12, _("校验位:"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT12")); 168 | wxFont StaticText12Font(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("黑体"),wxFONTENCODING_DEFAULT); 169 | StaticText12->SetFont(StaticText12Font); 170 | FlexGridSizer3->Add(StaticText12, 1, wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL, 5); 171 | cmbParitys = new wxChoice(this, ID_CHOICE5, wxDefaultPosition, wxSize(70,22), 0, 0, 0, wxDefaultValidator, _T("ID_CHOICE5")); 172 | cmbParitys->SetSelection( cmbParitys->Append(_("None")) ); 173 | cmbParitys->Append(_("Odd")); 174 | cmbParitys->Append(_("Even")); 175 | cmbParitys->Append(_("Mark")); 176 | cmbParitys->Append(_("Space")); 177 | FlexGridSizer3->Add(cmbParitys, 1, wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5); 178 | BoxSizer1->Add(FlexGridSizer3, 0, wxALL|wxEXPAND, 5); 179 | BoxSizer2 = new wxBoxSizer(wxHORIZONTAL); 180 | btnOpen = new wxButton(this, ID_BUTTON1, _("打开"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1")); 181 | btnOpen->SetFocus(); 182 | wxFont btnOpenFont(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("黑体"),wxFONTENCODING_DEFAULT); 183 | btnOpen->SetFont(btnOpenFont); 184 | BoxSizer2->Add(btnOpen, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 10); 185 | btnClose = new wxButton(this, ID_BUTTON2, _("关闭"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2")); 186 | wxFont btnCloseFont(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("黑体"),wxFONTENCODING_DEFAULT); 187 | btnClose->SetFont(btnCloseFont); 188 | BoxSizer2->Add(btnClose, 1, wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 10); 189 | BoxSizer1->Add(BoxSizer2, 0, wxTOP|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 190 | BoxSizer5 = new wxBoxSizer(wxHORIZONTAL); 191 | labNetState = new wxStaticText(this, ID_STATICTEXT6, _("网络未开启"), wxDefaultPosition, wxSize(110,14), wxALIGN_CENTRE, _T("ID_STATICTEXT6")); 192 | wxFont labNetStateFont(8,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("黑体"),wxFONTENCODING_DEFAULT); 193 | labNetState->SetFont(labNetStateFont); 194 | BoxSizer5->Add(labNetState, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 195 | StaticLine3 = new wxStaticLine(this, ID_STATICLINE3, wxDefaultPosition, wxSize(3,10), wxLI_HORIZONTAL, _T("ID_STATICLINE3")); 196 | BoxSizer5->Add(StaticLine3, 0, wxLEFT|wxRIGHT|wxEXPAND, 5); 197 | labComState = new wxStaticText(this, ID_STATICTEXT7, _("COM4已打开"), wxDefaultPosition, wxSize(110,14), wxALIGN_CENTRE, _T("ID_STATICTEXT7")); 198 | wxFont labComStateFont(8,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("黑体"),wxFONTENCODING_DEFAULT); 199 | labComState->SetFont(labComStateFont); 200 | BoxSizer5->Add(labComState, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 201 | BoxSizer1->Add(BoxSizer5, 0, wxTOP|wxLEFT|wxRIGHT|wxEXPAND, 5); 202 | StaticLine2 = new wxStaticLine(this, ID_STATICLINE2, wxDefaultPosition, wxSize(10,3), wxLI_HORIZONTAL, _T("ID_STATICLINE2")); 203 | BoxSizer1->Add(StaticLine2, 0, wxALL|wxEXPAND, 5); 204 | StaticText5 = new wxStaticText(this, ID_STATICTEXT5, _("Virtual COM"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT5")); 205 | StaticText5->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT)); 206 | wxFont StaticText5Font(16,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("黑体"),wxFONTENCODING_DEFAULT); 207 | StaticText5->SetFont(StaticText5Font); 208 | BoxSizer1->Add(StaticText5, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 209 | listComPairs = new wxListBox(this, ID_LISTBOX1, wxDefaultPosition, wxSize(246,66), 0, 0, 0, wxDefaultValidator, _T("ID_LISTBOX1")); 210 | BoxSizer1->Add(listComPairs, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 211 | BoxSizer3 = new wxBoxSizer(wxHORIZONTAL); 212 | txtCompA = new wxTextCtrl(this, ID_TEXTCTRL3, _("COMx"), wxDefaultPosition, wxSize(58,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL3")); 213 | BoxSizer3->Add(txtCompA, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 214 | StaticText8 = new wxStaticText(this, ID_STATICTEXT8, _("<=>"), wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT8")); 215 | BoxSizer3->Add(StaticText8, 0, wxTOP|wxBOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 216 | txtCompB = new wxTextCtrl(this, ID_TEXTCTRL4, _("COMx"), wxDefaultPosition, wxSize(58,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL4")); 217 | BoxSizer3->Add(txtCompB, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 218 | btnAddPair = new wxButton(this, ID_BUTTON3, _("添加"), wxDefaultPosition, wxSize(50,24), 0, wxDefaultValidator, _T("ID_BUTTON3")); 219 | wxFont btnAddPairFont(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("黑体"),wxFONTENCODING_DEFAULT); 220 | btnAddPair->SetFont(btnAddPairFont); 221 | BoxSizer3->Add(btnAddPair, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 222 | BoxSizer1->Add(BoxSizer3, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 223 | BoxSizer4 = new wxBoxSizer(wxHORIZONTAL); 224 | btnReload = new wxButton(this, ID_BUTTON4, _("加载"), wxDefaultPosition, wxSize(65,24), 0, wxDefaultValidator, _T("ID_BUTTON4")); 225 | wxFont btnReloadFont(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("黑体"),wxFONTENCODING_DEFAULT); 226 | btnReload->SetFont(btnReloadFont); 227 | BoxSizer4->Add(btnReload, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 228 | btnRemove = new wxButton(this, ID_BUTTON5, _("删除"), wxDefaultPosition, wxSize(65,24), 0, wxDefaultValidator, _T("ID_BUTTON5")); 229 | wxFont btnRemoveFont(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("黑体"),wxFONTENCODING_DEFAULT); 230 | btnRemove->SetFont(btnRemoveFont); 231 | BoxSizer4->Add(btnRemove, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 232 | btnInstall = new wxButton(this, ID_BUTTON6, _("安装驱动"), wxDefaultPosition, wxSize(65,24), 0, wxDefaultValidator, _T("ID_BUTTON6")); 233 | wxFont btnInstallFont(10,wxFONTFAMILY_SWISS,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_NORMAL,false,_T("黑体"),wxFONTENCODING_DEFAULT); 234 | btnInstall->SetFont(btnInstallFont); 235 | BoxSizer4->Add(btnInstall, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 236 | BoxSizer1->Add(BoxSizer4, 0, wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); 237 | SetSizer(BoxSizer1); 238 | Timer1.SetOwner(this, ID_TIMER1); 239 | SetSizer(BoxSizer1); 240 | Layout(); 241 | Center(); 242 | 243 | Connect(ID_CHOICE2,wxEVT_COMMAND_CHOICE_SELECTED,(wxObjectEventFunction)&TCP2COMDialog::OncmbCompSelect); 244 | Connect(ID_CHOICE3,wxEVT_COMMAND_CHOICE_SELECTED,(wxObjectEventFunction)&TCP2COMDialog::OncmbBaudrateSelect); 245 | Connect(ID_CHOICE4,wxEVT_COMMAND_CHOICE_SELECTED,(wxObjectEventFunction)&TCP2COMDialog::OncmbDatabitsSelect); 246 | Connect(ID_CHOICE5,wxEVT_COMMAND_CHOICE_SELECTED,(wxObjectEventFunction)&TCP2COMDialog::OncmbParitysSelect); 247 | Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&TCP2COMDialog::OnbtnOpenClick); 248 | Connect(ID_BUTTON2,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&TCP2COMDialog::OnbtnStopClick); 249 | Connect(ID_BUTTON3,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&TCP2COMDialog::OnbtnAddPairClick); 250 | Connect(ID_BUTTON4,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&TCP2COMDialog::OnbtnReloadClick); 251 | Connect(ID_BUTTON5,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&TCP2COMDialog::OnbtnRemoveClick); 252 | Connect(ID_BUTTON6,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&TCP2COMDialog::OnbtnInstallClick); 253 | Connect(ID_TIMER1,wxEVT_TIMER,(wxObjectEventFunction)&TCP2COMDialog::OnTimer1Trigger); 254 | Connect(wxID_ANY,wxEVT_INIT_DIALOG,(wxObjectEventFunction)&TCP2COMDialog::OnInit); 255 | Connect(wxID_ANY,wxEVT_CLOSE_WINDOW,(wxObjectEventFunction)&TCP2COMDialog::OnClose); 256 | //*) 257 | } 258 | 259 | TCP2COMDialog::~TCP2COMDialog() 260 | { 261 | //(*Destroy(TCP2COMDialog) 262 | //*) 263 | } 264 | 265 | void TCP2COMDialog::OnQuit(wxCommandEvent& event) 266 | { 267 | Close(); 268 | } 269 | 270 | void TCP2COMDialog::OnAbout(wxCommandEvent& event) 271 | { 272 | wxString msg = wxbuildinfo(long_f); 273 | wxMessageBox(msg, _("Welcome to...")); 274 | } 275 | 276 | /** 277 | * 观察者模式的接收函数 278 | **/ 279 | void TCP2COMDialog::onReciveData(FrameObserver::DataSource source,uint8_t * data,size_t len) 280 | { 281 | //从网络收到数据 282 | if(source == FrameObserver::DataSource::NETWORK) { 283 | //cout<<"Redirect to comport !"<Clear(); 305 | for(i=0;iGetCount();i++) 306 | { 307 | cout<<"Item: "<GetString(i)<GetString(i)," <=>",wxTOKEN_STRTOK); 309 | while(token.HasMoreTokens()) { 310 | wxString field = token.NextToken(); 311 | if(field.Left(3) == "COM" && field.substr(3).ToLong(&portNO)) { 312 | //cout<<"Field: "<Append(field); 314 | } 315 | } 316 | } 317 | //---------------------------------------- 318 | //检查配置文件中上次设置的串口 319 | FactoryPreset& preset = FactoryPreset::getPreset(); 320 | preset.config->SetPath("/TCPServer"); 321 | wxString cacheComP = preset.config->Read("COMP"); 322 | cmbComport->SetStringSelection(cacheComP); 323 | } 324 | 325 | /** 326 | * 只允许进程打开一个实例 327 | **/ 328 | void TCP2COMDialog::OnInit(wxInitDialogEvent& event) 329 | { 330 | HANDLE hMutex = CreateMutex(NULL,TRUE,_("TCP2COM")); 331 | if(hMutex && ERROR_ALREADY_EXISTS == GetLastError()) 332 | { 333 | HWND hWnd = ::FindWindow(NULL,TEXT("网络转串口")); 334 | if(hWnd != NULL) 335 | { 336 | ::SwitchToThisWindow(hWnd,TRUE); 337 | ::ShowWindow(hWnd,SW_SHOWNORMAL); 338 | } 339 | //如果相同的进程已存在则关闭当前进程 340 | ExitProcess(0); 341 | } 342 | //------------------------------------------- 343 | FactoryPreset& preset = FactoryPreset::getPreset(); 344 | preset.config->SetPath("TCPServer"); 345 | txtHost->SetValue(preset.config->Read("HOST")); 346 | txtPort->SetValue(preset.config->Read("PORT")); 347 | /** 348 | * 界面初始化完成后自动加载所有的虚拟串口 349 | **/ 350 | wxCommandEvent* loadCaller = new wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED,ID_BUTTON4); 351 | OnbtnReloadClick(*loadCaller); 352 | 353 | cmbBaudrate->SetStringSelection(preset.config->Read("BAUD")); 354 | cmbDatabits->SetStringSelection(preset.config->Read("DATB")); 355 | cmbParitys->SetStringSelection(preset.config->Read("PARI")); 356 | //------------------------------------------- 357 | NetCommService& netService = NetCommService::getService(); 358 | netService.addObserver(this); 359 | SerialCommService& comService = SerialCommService::getService(); 360 | comService.addObserver(this); 361 | 362 | btnClose->Enable(false); 363 | Timer1.Start(500); 364 | } 365 | 366 | /** 367 | * 安装虚拟串口驱动 368 | **/ 369 | void TCP2COMDialog::OnbtnInstallClick(wxCommandEvent& event) 370 | { 371 | btnInstall->Enable(false); 372 | VirtualCom& manager = VirtualCom::getManager(); 373 | manager.installDriver(); 374 | btnInstall->Enable(true); 375 | } 376 | 377 | /** 378 | * 加载虚拟串口列表 379 | **/ 380 | void TCP2COMDialog::OnbtnReloadClick(wxCommandEvent& event) 381 | { 382 | int i = 0; 383 | size_t numOfPairs = 0; 384 | btnReload->Enable(false); 385 | VirtualCom& manager = VirtualCom::getManager(); 386 | VirtualCom::CommPairType* commPairs = new VirtualCom::CommPairType[32]; 387 | manager.loadCommPairs(commPairs,&numOfPairs); 388 | 389 | listComPairs->Clear(); 390 | for(i=0;i<(int)numOfPairs;i++) 391 | { 392 | wxString item = "ComPair " + wxString::Format("%d",commPairs[i].index) + " " + commPairs[i].comA + "<=>" + commPairs[i].comB; 393 | listComPairs->Append(item); 394 | } 395 | 396 | //--------------------------------- 397 | delete [] commPairs; 398 | btnReload->Enable(true); 399 | 400 | //更新下拉列表框 401 | updateComports(); 402 | } 403 | 404 | /** 405 | * 删除指定的一对虚拟串口 406 | **/ 407 | void TCP2COMDialog::OnbtnRemoveClick(wxCommandEvent& event) 408 | { 409 | int i = 0; 410 | long pairIndex = 0; 411 | 412 | btnRemove->Enable(false); 413 | if(listComPairs->GetSelection() >= 0) { 414 | //cout<<"Delete Virtual Com Pair : "<< 415 | //listComPairs->GetString(listComPairs->GetSelection())<GetString(listComPairs->GetSelection()), 418 | " <=>",wxTOKEN_STRTOK); 419 | for(i=0;i<32;i++) { 420 | if(token.HasMoreTokens()) { 421 | if(token.NextToken() == "ComPair") { 422 | if(token.NextToken().ToLong(&pairIndex)) { 423 | cout<<"Delete Pair "<Enable(true); 440 | } 441 | 442 | /** 443 | * 添加一对指定的虚拟串口 444 | **/ 445 | void TCP2COMDialog::OnbtnAddPairClick(wxCommandEvent& event) 446 | { 447 | long portA,portB; 448 | btnAddPair->Enable(false); 449 | if(txtCompA->GetValue().Left(3) == "COM" && txtCompB->GetValue().Left(3) == "COM") { 450 | if(txtCompA->GetValue().substr(3).ToLong(&portA) && txtCompB->GetValue().substr(3).ToLong(&portB)) { 451 | if(portA != portB) { //一对虚拟串口的两个串口号不可能一样 452 | VirtualCom& manager = VirtualCom::getManager(); 453 | manager.createComPair(txtCompA->GetValue(),txtCompB->GetValue()); 454 | /** 455 | * 创建新的虚拟串口后需要重新加载虚拟串口列表 456 | **/ 457 | wxCommandEvent* loadCaller = new wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED,ID_BUTTON4); 458 | OnbtnReloadClick(*loadCaller); 459 | } 460 | } 461 | } 462 | btnAddPair->Enable(true); 463 | } 464 | 465 | /** 466 | * 打开通信口 467 | **/ 468 | void TCP2COMDialog::OnbtnOpenClick(wxCommandEvent& event) 469 | { 470 | cmbComport->Enable(false); 471 | cmbBaudrate->Enable(false); 472 | cmbDatabits->Enable(false); 473 | cmbParitys->Enable(false); 474 | 475 | //保存输入的主机地址和端口号 476 | FactoryPreset& preset = FactoryPreset::getPreset(); 477 | preset.config->SetPath("/TCPServer"); 478 | preset.config->Write("HOST",txtHost->GetValue()); 479 | preset.config->Write("PORT",txtPort->GetValue()); 480 | preset.SaveConfig(); 481 | 482 | //打开网络 483 | NetCommService& netService = NetCommService::getService(); 484 | netService.open(); 485 | //打开串口 486 | SerialCommService& comService = SerialCommService::getService(); 487 | comService.open(); 488 | 489 | btnOpen->Enable(false); 490 | btnClose->Enable(true); 491 | } 492 | 493 | /** 494 | * 关闭通信口 495 | **/ 496 | void TCP2COMDialog::OnbtnStopClick(wxCommandEvent& event) 497 | { 498 | cmbComport->Enable(true); 499 | cmbBaudrate->Enable(true); 500 | cmbDatabits->Enable(true); 501 | cmbParitys->Enable(true); 502 | 503 | NetCommService& netService = NetCommService::getService(); 504 | netService.close(); 505 | SerialCommService& comService = SerialCommService::getService(); 506 | comService.close(); 507 | 508 | btnOpen->Enable(true); 509 | btnClose->Enable(false); 510 | } 511 | 512 | /** 513 | * 当重新选择串口后,保存到配置文件 514 | **/ 515 | void TCP2COMDialog::OncmbCompSelect(wxCommandEvent& event) 516 | { 517 | FactoryPreset& preset = FactoryPreset::getPreset(); 518 | preset.config->SetPath("/TCPServer"); 519 | preset.config->Write("COMP",event.GetString()); 520 | preset.SaveConfig(); 521 | } 522 | 523 | void TCP2COMDialog::OnClose(wxCloseEvent& event) 524 | { 525 | NetCommService& netService = NetCommService::getService(); 526 | netService.close(); 527 | SerialCommService& comService = SerialCommService::getService(); 528 | comService.close(); 529 | 530 | EndDialog(0); 531 | } 532 | 533 | void TCP2COMDialog::OncmbBaudrateSelect(wxCommandEvent& event) 534 | { 535 | FactoryPreset& preset = FactoryPreset::getPreset(); 536 | preset.config->SetPath("/TCPServer"); 537 | preset.config->Write("BAUD",event.GetString()); 538 | preset.SaveConfig(); 539 | } 540 | 541 | void TCP2COMDialog::OncmbDatabitsSelect(wxCommandEvent& event) 542 | { 543 | FactoryPreset& preset = FactoryPreset::getPreset(); 544 | preset.config->SetPath("/TCPServer"); 545 | preset.config->Write("DATB",event.GetString()); 546 | preset.SaveConfig(); 547 | } 548 | 549 | void TCP2COMDialog::OncmbParitysSelect(wxCommandEvent& event) 550 | { 551 | FactoryPreset& preset = FactoryPreset::getPreset(); 552 | preset.config->SetPath("/TCPServer"); 553 | preset.config->Write("PARI",event.GetString()); 554 | preset.SaveConfig(); 555 | } 556 | 557 | /** 558 | * 计时器用于检测网络和串口的通信状态 559 | **/ 560 | void TCP2COMDialog::OnTimer1Trigger(wxTimerEvent& event) 561 | { 562 | //检测网络状态 563 | NetCommService& netService = NetCommService::getService(); 564 | if(netService.isOpen() && btnOpen->IsEnabled() == false) { //已开启网络 565 | if(netService.clientCount == 0) { 566 | labNetState->SetLabel("网络未连接..."); 567 | labNetState->SetForegroundColour(*(wxColour *)wxYELLOW); 568 | } 569 | if(netService.clientCount == 1) { 570 | labNetState->SetLabel("网络连接正常!"); 571 | labNetState->SetForegroundColour(*(wxColour *)wxBLUE); 572 | } 573 | if(netService.clientCount > 1) { 574 | labNetState->SetLabel("网络连接异常!"); 575 | labNetState->SetForegroundColour(*(wxColour *)wxRED); 576 | } 577 | }else{ 578 | labNetState->SetLabel("网络未打开..."); 579 | labNetState->SetForegroundColour(*(wxColour *)wxBLACK); 580 | } 581 | //---------------------------------------------- 582 | //检测串口状态 583 | SerialCommService& compService = SerialCommService::getService(); 584 | if(compService.isOpen()) { 585 | labComState->SetLabel("串口已打开!"); 586 | labComState->SetForegroundColour(*(wxColour *)wxBLUE); 587 | }else{ 588 | labComState->SetLabel("串口未打开..."); 589 | labComState->SetForegroundColour(*(wxColour *)wxBLACK); 590 | } 591 | } 592 | -------------------------------------------------------------------------------- /TCP2COMMain.h: -------------------------------------------------------------------------------- 1 | /*************************************************************** 2 | * Name: TCP2COMMain.h 3 | * Purpose: Defines Application Frame 4 | * Author: David (lw.7@foxmail.com) 5 | * Created: 2019-05-07 6 | * Copyright: David () 7 | * License: 8 | **************************************************************/ 9 | 10 | #ifndef TCP2COMMAIN_H 11 | #define TCP2COMMAIN_H 12 | 13 | //(*Headers(TCP2COMDialog) 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | //*) 24 | 25 | #include "FrameObserver.h" 26 | 27 | class TCP2COMDialog: public wxDialog, public FrameObserver 28 | { 29 | public: 30 | 31 | TCP2COMDialog(wxWindow* parent,wxWindowID id = -1); 32 | virtual ~TCP2COMDialog(); 33 | 34 | void updateComports(); //每次重新加载虚拟串口列表后,跟着刷新下拉列表框的选项 35 | 36 | private: 37 | 38 | //(*Handlers(TCP2COMDialog) 39 | void OnQuit(wxCommandEvent& event); 40 | void OnAbout(wxCommandEvent& event); 41 | void OnInit(wxInitDialogEvent& event); 42 | void OnbtnInstallClick(wxCommandEvent& event); 43 | void OnbtnReloadClick(wxCommandEvent& event); 44 | void OnbtnRemoveClick(wxCommandEvent& event); 45 | void OnbtnAddPairClick(wxCommandEvent& event); 46 | void OnbtnOpenClick(wxCommandEvent& event); 47 | void OnbtnStopClick(wxCommandEvent& event); 48 | void OncmbCompSelect(wxCommandEvent& event); 49 | void OnClose(wxCloseEvent& event); 50 | void OncmbBaudrateSelect(wxCommandEvent& event); 51 | void OncmbDatabitsSelect(wxCommandEvent& event); 52 | void OncmbParitysSelect(wxCommandEvent& event); 53 | void OnTimer1Trigger(wxTimerEvent& event); 54 | //*) 55 | 56 | //(*Identifiers(TCP2COMDialog) 57 | static const long ID_STATICTEXT1; 58 | static const long ID_STATICTEXT2; 59 | static const long ID_TEXTCTRL1; 60 | static const long ID_STATICTEXT3; 61 | static const long ID_TEXTCTRL2; 62 | static const long ID_STATICLINE1; 63 | static const long ID_STATICTEXT9; 64 | static const long ID_CHOICE2; 65 | static const long ID_STATICTEXT10; 66 | static const long ID_CHOICE3; 67 | static const long ID_STATICTEXT11; 68 | static const long ID_CHOICE4; 69 | static const long ID_STATICTEXT12; 70 | static const long ID_CHOICE5; 71 | static const long ID_BUTTON1; 72 | static const long ID_BUTTON2; 73 | static const long ID_STATICTEXT6; 74 | static const long ID_STATICLINE3; 75 | static const long ID_STATICTEXT7; 76 | static const long ID_STATICLINE2; 77 | static const long ID_STATICTEXT5; 78 | static const long ID_LISTBOX1; 79 | static const long ID_TEXTCTRL3; 80 | static const long ID_STATICTEXT8; 81 | static const long ID_TEXTCTRL4; 82 | static const long ID_BUTTON3; 83 | static const long ID_BUTTON4; 84 | static const long ID_BUTTON5; 85 | static const long ID_BUTTON6; 86 | static const long ID_TIMER1; 87 | //*) 88 | 89 | //(*Declarations(TCP2COMDialog) 90 | wxBoxSizer* BoxSizer1; 91 | wxButton* btnAddPair; 92 | wxButton* btnClose; 93 | wxButton* btnInstall; 94 | wxButton* btnOpen; 95 | wxButton* btnReload; 96 | wxButton* btnRemove; 97 | wxChoice* cmbBaudrate; 98 | wxChoice* cmbComport; 99 | wxChoice* cmbDatabits; 100 | wxChoice* cmbParitys; 101 | wxListBox* listComPairs; 102 | wxStaticLine* StaticLine1; 103 | wxStaticLine* StaticLine2; 104 | wxStaticLine* StaticLine3; 105 | wxStaticText* StaticText10; 106 | wxStaticText* StaticText11; 107 | wxStaticText* StaticText12; 108 | wxStaticText* StaticText1; 109 | wxStaticText* StaticText2; 110 | wxStaticText* StaticText3; 111 | wxStaticText* StaticText5; 112 | wxStaticText* StaticText8; 113 | wxStaticText* StaticText9; 114 | wxStaticText* labComState; 115 | wxStaticText* labNetState; 116 | wxTextCtrl* txtCompA; 117 | wxTextCtrl* txtCompB; 118 | wxTextCtrl* txtHost; 119 | wxTextCtrl* txtPort; 120 | wxTimer Timer1; 121 | //*) 122 | 123 | //观察者模式的接收函数 124 | void onReciveData(FrameObserver::DataSource source,uint8_t * data,size_t len); 125 | 126 | DECLARE_EVENT_TABLE() 127 | }; 128 | 129 | #endif // TCP2COMMAIN_H 130 | -------------------------------------------------------------------------------- /bin/Debug/com0com_x64/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ============================= 2 | Null-modem emulator (com0com) 3 | ============================= 4 | 5 | INTRODUCTION 6 | ============ 7 | 8 | The Null-modem emulator is an open source kernel-mode virtual serial 9 | port driver for Windows, available freely under GPL license. 10 | You can create an unlimited number of virtual COM port 11 | pairs and use any pair to connect one application to another. 12 | Each COM port pair provides two COM ports with default names starting 13 | at CNCA0 and CNCB0. The output to one port is the input from other 14 | port and vice versa. 15 | 16 | Usually one port of the pair is used by Windows application that 17 | requires a COM port to communicate with a device and other port is 18 | used by device emulation program. 19 | 20 | For example, to send/receive faxes over IP you can connect Windows Fax 21 | application to CNCA0 port and t38modem (http://t38modem.sourceforge.net/) 22 | to CNCB0 port. In this case the t38modem is a fax modem emulation program. 23 | 24 | In conjunction with the hub4com the com0com allows you to 25 | - handle data and signals from a single real serial device by a number of 26 | different applications. For example, several applications can share data 27 | from one GPS device; 28 | - use real serial ports of remote computer like if they exist on the local 29 | computer (supports RFC 2217). 30 | 31 | The homepage for com0com project is http://com0com.sourceforge.net/. 32 | 33 | 34 | INSTALLING 35 | ========== 36 | 37 | NOTE (x64-based Windows Vista/Windows Server 2008/Windows 7/8): 38 | The com0com.sys is a test-signed kernel-mode driver that will not load by 39 | default. To enable test signing, enter command: 40 | 41 | bcdedit.exe -set TESTSIGNING ON 42 | 43 | and reboot the computer. 44 | 45 | NOTE: 46 | Enabling test signing will impair computer security. 47 | 48 | Simply run the installer (setup.exe). An installation wizard will guide 49 | you through the required steps. 50 | If the Found New Hardware Wizard will pop up then 51 | - select "No, not this time" and click Next; 52 | - select "Install the software automatically (Recommended)" and click Next. 53 | The one COM port pair with names CNCA0 and CNCB0 will be available on your 54 | system after the installation. 55 | 56 | You can add more pairs with the Setup Command Prompt: 57 | 58 | 1. Launch the Setup Command Prompt shortcut. 59 | 2. Enter the install command, for example: 60 | 61 | command> install - - 62 | 63 | The system will create 3 new virtual devices. One of the devices has 64 | name "com0com - bus for serial port pair emulator" and other two of 65 | them have name "com0com - serial port emulator" and located on CNCAn 66 | and CNCBn ports. 67 | 68 | To get more info enter the help command, for example: 69 | 70 | command> help 71 | 72 | Alternatively to setup ports you can invoke GUI-based setup utility by 73 | launching Setup shortcut (Microsoft .NET Framework 2.0 is required). 74 | 75 | TESTING 76 | ======= 77 | 78 | 1. Start the HyperTerminal on CNCA0 port. 79 | 2. Start the HyperTerminal on CNCB0 port. 80 | 3. The output to CNCA0 port should be the input from CNCB0 port and 81 | vice versa. 82 | 83 | 84 | UNINSTALLING 85 | ============ 86 | 87 | Simply launch the com0com's Uninstall shortcut in the Start Menu or remove 88 | the "Null-modem emulator (com0com)" entry from the "Add/Remove Programs" 89 | section in the Control Panel. An uninstallation wizard will guide 90 | you through the required steps. 91 | 92 | HINT: To uninstall the old version of com0com (distributed w/o installer) 93 | install the new one and then uninstall it. 94 | 95 | 96 | FAQs & HOWTOs 97 | ============= 98 | 99 | Q. Is it possible to run com0com on Windows 9x platform? 100 | A. No, it is not possible. You need Windows 2000 platform or newer. 101 | 102 | Q. Is it possible to install or uninstall com0com silently (with no user 103 | intervention and no user interface)? 104 | A. Yes, it's possible with /S option, for example: 105 | 106 | setup.exe /S 107 | "%ProgramFiles%\com0com\uninstall.exe" /S 108 | 109 | You can specify the installation directory with /D option, for example: 110 | 111 | setup.exe /S /D=C:\Program Files\com0com 112 | 113 | NOTE: Silent installation of com0com will not install any port pairs by 114 | default {it can be overriden by setting CNC_INSTALL_CNCA0_CNCB0_PORTS 115 | and/or CNC_INSTALL_COMX_COMX_PORTS environment variables). 116 | 117 | Q. What are the other setup.exe command line options? 118 | A. The command line options of setup.exe and uninstall.exe listed in 119 | NSIS Users Manual, section 3.2 Installer Usage: 120 | 121 | http://nsis.sourceforge.net/Docs/Chapter3.html#3.2 122 | 123 | Additionally the following environment variables can be used. 124 | 125 | To change behaviour of setup.exe: 126 | 127 | CNC_INSTALL_START_MENU_SHORTCUTS={YES|NO} - select/unselect "Start Menu Shortcuts" 128 | CNC_INSTALL_CNCA0_CNCB0_PORTS={YES|NO} - select/unselect "CNCA0 <-> CNCB0" 129 | CNC_INSTALL_COMX_COMX_PORTS={YES|NO} - select/unselect "COM# <-> COM#" 130 | CNC_INSTALL_SKIP_SETUP_PREINSTALL={YES|NO} - skip preinstalling/updating driver 131 | 132 | To change behaviour of uninstall.exe: 133 | 134 | CNC_UNINSTALL_SKIP_SETUP_UNINSTALL={YES|NO} - skip uninstalling devices and driver 135 | 136 | Q. Is it possible to change the names CNCA0 and CNCB0 to COM8 and COM9? 137 | A. Yes, it's possible. To change the names: 138 | 139 | 1. Launch the Setup Command Prompt shortcut. 140 | 2. Enter the change commands, for example: 141 | 142 | command> change CNCA0 PortName=COM8 143 | command> change CNCB0 PortName=COM9 144 | 145 | Alternatively you can set names to 'COM#', for example: 146 | 147 | command> change CNCA0 PortName=COM# 148 | command> change CNCB0 PortName=COM# 149 | 150 | If parameter 'PortName=COM#' is used then the Ports class installer will be 151 | invoked to set the real port name. The Ports class installer selects the COM 152 | port number and sets the real port name to COM, where is the selected 153 | port number. After installing the Ports class port you can use the list 154 | command to get the real port name and the parameter RealPortName=COM to 155 | change the real port name, for example: 156 | 157 | command> list 158 | CNCA0 PortName=COM#,RealPortName=COM3 159 | CNCB0 PortName=COM#,RealPortName=COM4 160 | command> change CNCA0 RealPortName=COM8 161 | command> change CNCB0 RealPortName=COM9 162 | command> list 163 | CNCA0 PortName=COM#,RealPortName=COM8 164 | CNCB0 PortName=COM#,RealPortName=COM9 165 | 166 | Q. The baud rate setting does not seem to make a difference: data is always 167 | transferred at the same speed. How to enable the baud rate emulation? 168 | A. To enable baud rate emulation for transferring data from CNCA0 to CNCB0: 169 | 170 | 1. Launch the Setup Command Prompt shortcut. 171 | 2. Enter the change command, for example: 172 | 173 | command> change CNCA0 EmuBR=yes 174 | 175 | Q. The HyperTerminal test succeeds, but I get a failure when trying to open the 176 | port with CreateFile("CNCA0", ...). GetLastError() returns ERROR_FILE_NOT_FOUND. 177 | A. You must prefix the port name with the special characters "\\.\". Try to open 178 | the port with CreateFile("\\\\.\\CNCA0", ...). 179 | 180 | Q. My application hangs during its startup when it sends anything to one paired 181 | COM port. The only way to unhang it is to start HyperTerminal, which is connected 182 | to the other paired COM port. I didn't have this problem with physical serial 183 | ports. 184 | A. Your application can hang because receive buffer overrun is disabled by 185 | default. You can fix the problem by enabling receive buffer overrun for the 186 | receiving port. Also, to prevent some flow control issues you need to enable 187 | baud rate emulation for the sending port. So, if your application use port CNCA0 188 | and other paired port is CNCB0, then: 189 | 190 | 1. Launch the Setup Command Prompt shortcut. 191 | 2. Enter the change commands, for example: 192 | 193 | command> change CNCB0 EmuOverrun=yes 194 | command> change CNCA0 EmuBR=yes 195 | 196 | Q. When the corresponding port of a pair is not open, some characters will remain 197 | in the ouput buffer of the sending port and be output upon the next connection. 198 | Any clue on a possible workaround? 199 | A. It's a correct behavior if receive buffer overrun is disabled (by default). If 200 | you need behavior where those characters should be lost (like real null modem do) 201 | then enable receive buffer overrun for the receiving port. Also, to prevent some 202 | flow control issues enable baud rate emulation for the sending port. So, if 203 | sending port is CNCA0 and receiving port is CNCB0, then: 204 | 205 | 1. Launch the Setup Command Prompt shortcut. 206 | 2. Enter the change commands, for example: 207 | 208 | command> change CNCB0 EmuOverrun=yes 209 | command> change CNCA0 EmuBR=yes 210 | 211 | Q. I have to write an application connected to one side of the com0com port pair, 212 | and I don't want users to 'see' all the virtual ports created by com0com, but 213 | only the really available ones. 214 | A. if your application use port CNCB0 and other (used by users) paired port is CNCA0, 215 | then CNCB0 can be 'hidden' and CNCA0 can be 'shown' on opening CNCB0 by your 216 | application. To enable it: 217 | 218 | 1. Launch the Setup Command Prompt shortcut. 219 | 2. Enter the change commands: 220 | 221 | command> change CNCB0 ExclusiveMode=yes 222 | command> change CNCA0 PlugInMode=yes 223 | 224 | Q. When I add a port pair, why does Windows XP always pops up a Found New Hardware 225 | Wizard? The drivers are already there and it can install them silently in the 226 | background and report when the device is ready. 227 | A. It's because there is not signed com0com.cat catalog file. It can be created on 228 | your test computer by this way: 229 | 230 | 1. Create a catalog file, for example: 231 | 232 | cd "C:\Program Files\com0com" 233 | inf2cat /driver:. /os:XP_X86 234 | 235 | 2. Create a test certificate, for example: 236 | 237 | makecert -r -n "CN=com0com (test)" -sv com0com.pvk com0com.cer 238 | pvk2pfx -pvk com0com.pvk -spc com0com.cer -pfx com0com.pfx 239 | 240 | 3. Sign the catalog file by test certificate, for example: 241 | 242 | signtool sign /v /f com0com.pfx com0com.cat 243 | 244 | 4. Install a test certificate to the Trusted Root Certification Authorities 245 | certificate store and the Trusted Publishers certificate store, for example: 246 | 247 | certmgr -add com0com.cer -s -r localMachine root 248 | certmgr -add com0com.cer -s -r localMachine trustedpublisher 249 | 250 | The inf2cat, makecert, pvk2pfx, signtool and certmgr tools are included in the 251 | Windows Driver Kit (WDK). 252 | 253 | Alternatively you can cancel Found New Hardware Wizard and install driver by 254 | update command, for example: 255 | 256 | setupc install - - 257 | setupc update 258 | 259 | Additionally you can temporary suppress Plug and Play-related UI messages, for 260 | example: 261 | 262 | reg add HKLM\Software\Policies\Microsoft\Windows\DeviceInstall\Settings /v SuppressNewHWUI /t REG_DWORD /d 1 /f 263 | setupc install - - 264 | setupc update 265 | reg add HKLM\Software\Policies\Microsoft\Windows\DeviceInstall\Settings /v SuppressNewHWUI /t REG_DWORD /d 0 /f 266 | 267 | See http://support.microsoft.com/kb/938596 for more info. 268 | 269 | Q. How to monitor and get the paired port settings (baud rate, byte size, parity 270 | and stop bits)? 271 | A. It can be done with extended IOCTL_SERIAL_LSRMST_INSERT. See example in 272 | 273 | http://com0com.sourceforge.net/examples/LSRMST_INSERT/tstser.cpp 274 | 275 | Q. To transfer state to CTS and DSR they wired to RTS and DTR. How to transfer 276 | state to DCD and RING? 277 | A. The OUT1 can be wired to DCD and OUT2 to RING. Use extended 278 | IOCTL_SERIAL_SET_MODEM_CONTROL and IOCTL_SERIAL_GET_MODEM_CONTROL to change 279 | state of OUT1 and OUT2. See example in 280 | 281 | http://com0com.sourceforge.net/examples/MODEM_CONTROL/tstser.cpp 282 | 283 | Q. What version am I running? 284 | A. In the device manager, the driver properties page shows the version and date 285 | of the INF files, while the driver details page shows a version of 286 | com0com.sys file. The version of com0com.sys file is the version that you 287 | are running. 288 | 289 | Q. I'm able to use some application to talk to some hardware using com2tcp when 290 | both the com2tcp 'server' and 'client' are running on the same computer. 291 | When I try to move the client to a remote computer the application gives me 292 | a timeout message and has no settings to increase the timeout. How to fix 293 | the problem? 294 | A. Try to ajust AddRTTO and AddRITO params for application's COM port: 295 | 296 | 1. Launch the Setup Command Prompt shortcut. 297 | 2. Enter the change command, for example: 298 | 299 | command> change CNCA0 AddRTTO=100,AddRITO=100 300 | 301 | Q. I would like to be able to add, remove and rename virtual comm ports from my 302 | own custom application. Is there an API that I can use or some command line 303 | utility that will do the job? 304 | A. The setupc.exe is a command line utility that will do the job. To get more 305 | info enter: 306 | 307 | setupc help 308 | 309 | BTW: The setupg.exe is a GUI wrapper for setupc.exe. 310 | 311 | Q. I need to use com0com ports with an application that doesn't recognize 312 | com0com ports as "real" com ports. It does not see a com0com port even 313 | though I have changed it's name to COMx. Is there a com0com settings that 314 | will make the port appear to be a "real" com port? 315 | A. Yes, it is. You should put the port to the Ports class, for example: 316 | 317 | 1. Launch the Setup Command Prompt shortcut. 318 | 2. Install the pair of ports, were one of them has name COM#, for example: 319 | 320 | command> install PortName=COM# - 321 | 322 | Q. I have to somehow add a "fake" PNP device in device manager and have it 323 | connected under COM3. I use PNPComSimulator (http://www.bds.dogma.net/pnp_part2.htm), 324 | which can fake a PNP Serial device's response when polled by DevManager. 325 | Is it possible to have the device manager look for PNP equipement via com0com? 326 | A. Yes, it is. The simplest way is to put the port to the Ports class, for example: 327 | 328 | 1. Launch the Setup Command Prompt shortcut. 329 | 2. Install the pair of ports, were one of them has name COM#, for example: 330 | 331 | command> install 0 PortName=COM# - 332 | 333 | After installing the Ports class port you can use the list command to get 334 | the real port name, for example: 335 | 336 | command> list 337 | CNCA0 PortName=COM#,RealPortName=COM3 338 | CNCB0 PortName=- 339 | 340 | Q. Is it possible to configure the com0com to randomly corrupt the data? It 341 | would be nice to have this feature so that we can test our application 342 | robustness. 343 | A. Yes, it's possible by setting EmuNoise parameter: 344 | 345 | 1. Launch the Setup Command Prompt shortcut. 346 | 2. Enter the change command, for example: 347 | 348 | command> change CNCA0 EmuNoise=0.00001,EmuBR=yes,EmuOverrun=yes 349 | command> change CNCB0 EmuNoise=0.00001,EmuBR=yes,EmuOverrun=yes 350 | 351 | Now each character frame (including idle frames) will be corrupted with 352 | probability 0.00001. 353 | 354 | Q. What is the maximum number of port pairs that can be defined? 355 | A. It depends from your system. The com0com itself has internal limit 356 | 1000000 port pairs. 357 | 358 | Q. In my application, users could be installing up to 250 com port pairs. 359 | Initially, the installation is fairly quick, but each additional com port 360 | generally takes longer to install than the previous one. It quickly 361 | becomes unacceptable for a user to be expected to wait for the installation. 362 | A. It's because the installing of each next port pair requires to update driver 363 | for all installed pairs. You can speed up installing of multiple com port 364 | pairs by using install commands with --no-update option and then use 365 | install command w/o --no-update option, for example: 366 | 367 | command> --no-update install - - 368 | command> --no-update install - - 369 | ... 370 | command> --no-update install - - 371 | command> install 372 | 373 | The example of the batch program: 374 | 375 | cd /D "%ProgramFiles%\com0com" 376 | FOR /L %%i IN (0,1,249) DO setupc --no-update install - - 377 | setupc install 378 | 379 | Q. I am using the 64-bit version of com0com and I am having trouble. I'd like 380 | to debug this, but I can not find any free serial port monitor software, 381 | like portmon that works with a 64-bit OS. Does anyone know of any? 382 | A. You can try to use internal com0com's tracing for debuging: 383 | 384 | - get trace.reg file from com0com's source; 385 | - import trace.reg to the Registry; 386 | - reload driver (or reboot system); 387 | - do your tests and watch results in C:\com0com.log file. 388 | 389 | To disable tracing reinstall com0com or import trace_disable.reg to the 390 | Registry and reload driver. 391 | -------------------------------------------------------------------------------- /bin/Debug/com0com_x64/cncport.inf: -------------------------------------------------------------------------------- 1 | ;****************************************************************************** 2 | ; 3 | ; cncport.inf 4 | ; 5 | ; Installation file for the Null-modem emulator driver. 6 | ; 7 | ; Copyright (c) 2010-2012 Vyacheslav Frolov 8 | ; 9 | ;****************************************************************************** 10 | 11 | [Version] 12 | Signature = "$Windows NT$" 13 | Provider = %VF% 14 | Class = CNCPorts 15 | ClassGUID = {df799e12-3c56-421b-b298-b6d3642bc878} 16 | CatalogFile = com0com.cat 17 | ; MM/DD/YYYY 18 | DriverVer = 06/04/2012,3.0.0.0 19 | UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} 20 | 21 | ;****************************************************************************** 22 | ; 23 | ; Driver information 24 | ; 25 | ;****************************************************************************** 26 | 27 | [Manufacturer] 28 | %VF% = com0com, NTx86, NTia64, NTamd64 29 | 30 | [ControlFlags] 31 | ExcludeFromSelect = com0com\cncport 32 | 33 | [com0com] 34 | %com0com.PortDesc% = com0com_inst_port, com0com\cncport 35 | 36 | [com0com.NTx86] 37 | %com0com.PortDesc% = com0com_inst_port, com0com\cncport 38 | 39 | [com0com.NTia64] 40 | %com0com.PortDesc% = com0com_inst_port, com0com\cncport 41 | 42 | [com0com.NTamd64] 43 | %com0com.PortDesc% = com0com_inst_port, com0com\cncport 44 | 45 | ;****************************************************************************** 46 | ; 47 | ; Port install section 48 | ; 49 | ;****************************************************************************** 50 | 51 | [com0com_inst_port] 52 | AddReg = com0com_AddReg 53 | ;Include = msports.inf 54 | ;Needs = SerialEnumerator.NT 55 | 56 | [com0com_inst_port.Services] 57 | AddService = com0com, %SPSVCINST_ASSOCSERVICE%, com0com_Service_Inst, com0com_EventLog_Inst 58 | ;Include = msports.inf 59 | ;Needs = SerialEnumerator.NT.Services 60 | 61 | [com0com_inst_port.HW] 62 | AddReg = com0com_HW_AddReg 63 | 64 | [com0com_AddReg] 65 | 66 | [com0com_HW_AddReg] 67 | ;HKR,,"UpperFilters",0x00010000,"serenum" 68 | 69 | ;****************************************************************************** 70 | ; 71 | ; Common section 72 | ; 73 | ;****************************************************************************** 74 | 75 | [com0com_Service_Inst] 76 | DisplayName = %com0com.SrvDesc% 77 | ServiceType = %SERVICE_KERNEL_DRIVER% 78 | StartType = %SERVICE_DEMAND_START% 79 | ErrorControl = %SERVICE_ERROR_NORMAL% 80 | ServiceBinary = %12%\com0com.sys 81 | 82 | [com0com_EventLog_Inst] 83 | AddReg = com0com_EventLog_AddReg 84 | 85 | [com0com_EventLog_AddReg] 86 | HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\com0com.sys" 87 | HKR,,TypesSupported,%REG_DWORD%,7 88 | 89 | ;****************************************************************************** 90 | ; 91 | ; Strings 92 | ; 93 | ;****************************************************************************** 94 | 95 | [Strings] 96 | 97 | SPSVCINST_ASSOCSERVICE = 0x00000002 98 | 99 | REG_EXPAND_SZ = 0x00020000 100 | REG_DWORD = 0x00010001 101 | 102 | SERVICE_KERNEL_DRIVER = 1 103 | SERVICE_DEMAND_START = 3 104 | SERVICE_ERROR_NORMAL = 1 105 | 106 | VF = "Vyacheslav Frolov" 107 | com0com.PortDesc = "com0com - serial port emulator" 108 | com0com.SrvDesc = "com0com - emulates the serial ports interconnected via a null-modem cable" 109 | 110 | ;****************************************************************************** 111 | -------------------------------------------------------------------------------- /bin/Debug/com0com_x64/com0com.cat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allweshare/TCP2COM/3ec58dd62900ec832f8b7b73df621ce2ec52c44c/bin/Debug/com0com_x64/com0com.cat -------------------------------------------------------------------------------- /bin/Debug/com0com_x64/com0com.inf: -------------------------------------------------------------------------------- 1 | ;****************************************************************************** 2 | ; 3 | ; com0com.inf 4 | ; 5 | ; Installation file for the Null-modem emulator driver. 6 | ; 7 | ; Copyright (c) 2004-2012 Vyacheslav Frolov 8 | ; 9 | ;****************************************************************************** 10 | 11 | [Version] 12 | Signature = "$Windows NT$" 13 | Provider = %VF% 14 | Class = CNCPorts 15 | ClassGUID = {df799e12-3c56-421b-b298-b6d3642bc878} 16 | CatalogFile = com0com.cat 17 | ; MM/DD/YYYY 18 | DriverVer = 06/04/2012,3.0.0.0 19 | UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} 20 | 21 | ;****************************************************************************** 22 | ; 23 | ; Class section 24 | ; 25 | ;****************************************************************************** 26 | 27 | [ClassInstall32] 28 | AddReg = com0com_ClassReg 29 | 30 | [com0com_ClassReg] 31 | HKR,,,0,%ClassName% 32 | HKR,,Icon,,-23 33 | 34 | ;****************************************************************************** 35 | ; 36 | ; Source and Destination information 37 | ; 38 | ;****************************************************************************** 39 | 40 | [SourceDisksNames] 41 | 1 = %DiskId1%,,,"" 42 | 43 | [SourceDisksFiles] 44 | com0com.sys = 1,, 45 | 46 | [DestinationDirs] 47 | com0com_CopyDrivers = 12 48 | 49 | [com0com_CopyDrivers] 50 | com0com.sys 51 | 52 | ;****************************************************************************** 53 | ; 54 | ; Driver information 55 | ; 56 | ;****************************************************************************** 57 | 58 | [Manufacturer] 59 | %VF% = com0com, NTx86, NTia64, NTamd64 60 | 61 | [com0com] 62 | %com0com.BusDesc% = com0com_inst, root\com0com 63 | 64 | [com0com.NTx86] 65 | %com0com.BusDesc% = com0com_inst, root\com0com 66 | 67 | [com0com.NTia64] 68 | %com0com.BusDesc% = com0com_inst, root\com0com 69 | 70 | [com0com.NTamd64] 71 | %com0com.BusDesc% = com0com_inst, root\com0com 72 | 73 | ;****************************************************************************** 74 | ; 75 | ; Bus install section 76 | ; 77 | ;****************************************************************************** 78 | 79 | [com0com_inst] 80 | AddReg = com0com_AddReg 81 | CopyFiles = com0com_CopyDrivers 82 | CopyINF = cncport.inf 83 | ;CopyINF = comport.inf 84 | 85 | [com0com_inst.Services] 86 | AddService = com0com, %SPSVCINST_ASSOCSERVICE%, com0com_Service_Inst, com0com_EventLog_Inst 87 | 88 | [com0com_AddReg] 89 | 90 | ;****************************************************************************** 91 | ; 92 | ; Common section 93 | ; 94 | ;****************************************************************************** 95 | 96 | [com0com_Service_Inst] 97 | DisplayName = %com0com.SrvDesc% 98 | ServiceType = %SERVICE_KERNEL_DRIVER% 99 | StartType = %SERVICE_DEMAND_START% 100 | ErrorControl = %SERVICE_ERROR_NORMAL% 101 | ServiceBinary = %12%\com0com.sys 102 | 103 | [com0com_EventLog_Inst] 104 | AddReg = com0com_EventLog_AddReg 105 | 106 | [com0com_EventLog_AddReg] 107 | HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\com0com.sys" 108 | HKR,,TypesSupported,%REG_DWORD%,7 109 | 110 | ;****************************************************************************** 111 | ; 112 | ; Strings 113 | ; 114 | ;****************************************************************************** 115 | 116 | [Strings] 117 | 118 | SPSVCINST_ASSOCSERVICE = 0x00000002 119 | 120 | REG_EXPAND_SZ = 0x00020000 121 | REG_DWORD = 0x00010001 122 | 123 | SERVICE_KERNEL_DRIVER = 1 124 | SERVICE_DEMAND_START = 3 125 | SERVICE_ERROR_NORMAL = 1 126 | 127 | DiskId1 = "Installation Disk #1 (com0com - Null-modem emulator)" 128 | VF = "Vyacheslav Frolov" 129 | com0com.BusDesc = "com0com - bus for serial port pair emulator" 130 | com0com.SrvDesc = "com0com - emulates the serial ports interconnected via a null-modem cable" 131 | ClassName = "com0com - serial port emulators" 132 | 133 | ;****************************************************************************** 134 | -------------------------------------------------------------------------------- /bin/Debug/com0com_x64/com0com.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allweshare/TCP2COM/3ec58dd62900ec832f8b7b73df621ce2ec52c44c/bin/Debug/com0com_x64/com0com.sys -------------------------------------------------------------------------------- /bin/Debug/com0com_x64/comport.inf: -------------------------------------------------------------------------------- 1 | ;****************************************************************************** 2 | ; 3 | ; comport.inf 4 | ; 5 | ; Installation file for the Null-modem emulator driver. 6 | ; 7 | ; Copyright (c) 2010-2012 Vyacheslav Frolov 8 | ; 9 | ;****************************************************************************** 10 | 11 | [Version] 12 | Signature = "$Windows NT$" 13 | Provider = %VF% 14 | Class = Ports 15 | ClassGUID = {4D36E978-E325-11CE-BFC1-08002BE10318} 16 | CatalogFile = com0com.cat 17 | ; MM/DD/YYYY 18 | DriverVer = 06/04/2012,3.0.0.0 19 | UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} 20 | 21 | ;****************************************************************************** 22 | ; 23 | ; Driver information 24 | ; 25 | ;****************************************************************************** 26 | 27 | [Manufacturer] 28 | %VF% = com0com, NTx86, NTia64, NTamd64 29 | 30 | [ControlFlags] 31 | ExcludeFromSelect = com0com\comport 32 | 33 | [com0com] 34 | %com0com.PortDesc% = com0com_inst_port, com0com\comport 35 | 36 | [com0com.NTx86] 37 | %com0com.PortDesc% = com0com_inst_port, com0com\comport 38 | 39 | [com0com.NTia64] 40 | %com0com.PortDesc% = com0com_inst_port, com0com\comport 41 | 42 | [com0com.NTamd64] 43 | %com0com.PortDesc% = com0com_inst_port, com0com\comport 44 | 45 | ;****************************************************************************** 46 | ; 47 | ; Port install section 48 | ; 49 | ;****************************************************************************** 50 | 51 | [com0com_inst_port] 52 | AddReg = com0com_AddReg 53 | Include = msports.inf 54 | Needs = SerialEnumerator.NT 55 | 56 | [com0com_inst_port.Services] 57 | AddService = com0com, %SPSVCINST_ASSOCSERVICE%, com0com_Service_Inst, com0com_EventLog_Inst 58 | Include = msports.inf 59 | Needs = SerialEnumerator.NT.Services 60 | 61 | [com0com_inst_port.HW] 62 | AddReg = com0com_HW_AddReg 63 | 64 | [com0com_AddReg] 65 | ;HKR,,PortSubClass,1,01 66 | ;HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" 67 | 68 | [com0com_HW_AddReg] 69 | HKR,,"UpperFilters",0x00010000,"serenum" 70 | 71 | ;****************************************************************************** 72 | ; 73 | ; Common section 74 | ; 75 | ;****************************************************************************** 76 | 77 | [com0com_Service_Inst] 78 | DisplayName = %com0com.SrvDesc% 79 | ServiceType = %SERVICE_KERNEL_DRIVER% 80 | StartType = %SERVICE_DEMAND_START% 81 | ErrorControl = %SERVICE_ERROR_NORMAL% 82 | ServiceBinary = %12%\com0com.sys 83 | 84 | [com0com_EventLog_Inst] 85 | AddReg = com0com_EventLog_AddReg 86 | 87 | [com0com_EventLog_AddReg] 88 | HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\com0com.sys" 89 | HKR,,TypesSupported,%REG_DWORD%,7 90 | 91 | ;****************************************************************************** 92 | ; 93 | ; Strings 94 | ; 95 | ;****************************************************************************** 96 | 97 | [Strings] 98 | 99 | SPSVCINST_ASSOCSERVICE = 0x00000002 100 | 101 | REG_EXPAND_SZ = 0x00020000 102 | REG_DWORD = 0x00010001 103 | 104 | SERVICE_KERNEL_DRIVER = 1 105 | SERVICE_DEMAND_START = 3 106 | SERVICE_ERROR_NORMAL = 1 107 | 108 | VF = "Vyacheslav Frolov" 109 | com0com.PortDesc = "com0com - serial port emulator" 110 | com0com.SrvDesc = "com0com - emulates the serial ports interconnected via a null-modem cable" 111 | 112 | ;****************************************************************************** 113 | -------------------------------------------------------------------------------- /bin/Debug/com0com_x86/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ============================= 2 | Null-modem emulator (com0com) 3 | ============================= 4 | 5 | INTRODUCTION 6 | ============ 7 | 8 | The Null-modem emulator is an open source kernel-mode virtual serial 9 | port driver for Windows, available freely under GPL license. 10 | You can create an unlimited number of virtual COM port 11 | pairs and use any pair to connect one application to another. 12 | Each COM port pair provides two COM ports with default names starting 13 | at CNCA0 and CNCB0. The output to one port is the input from other 14 | port and vice versa. 15 | 16 | Usually one port of the pair is used by Windows application that 17 | requires a COM port to communicate with a device and other port is 18 | used by device emulation program. 19 | 20 | For example, to send/receive faxes over IP you can connect Windows Fax 21 | application to CNCA0 port and t38modem (http://t38modem.sourceforge.net/) 22 | to CNCB0 port. In this case the t38modem is a fax modem emulation program. 23 | 24 | In conjunction with the hub4com the com0com allows you to 25 | - handle data and signals from a single real serial device by a number of 26 | different applications. For example, several applications can share data 27 | from one GPS device; 28 | - use real serial ports of remote computer like if they exist on the local 29 | computer (supports RFC 2217). 30 | 31 | The homepage for com0com project is http://com0com.sourceforge.net/. 32 | 33 | 34 | INSTALLING 35 | ========== 36 | 37 | NOTE (x64-based Windows Vista/Windows Server 2008/Windows 7/8): 38 | The com0com.sys is a test-signed kernel-mode driver that will not load by 39 | default. To enable test signing, enter command: 40 | 41 | bcdedit.exe -set TESTSIGNING ON 42 | 43 | and reboot the computer. 44 | 45 | NOTE: 46 | Enabling test signing will impair computer security. 47 | 48 | Simply run the installer (setup.exe). An installation wizard will guide 49 | you through the required steps. 50 | If the Found New Hardware Wizard will pop up then 51 | - select "No, not this time" and click Next; 52 | - select "Install the software automatically (Recommended)" and click Next. 53 | The one COM port pair with names CNCA0 and CNCB0 will be available on your 54 | system after the installation. 55 | 56 | You can add more pairs with the Setup Command Prompt: 57 | 58 | 1. Launch the Setup Command Prompt shortcut. 59 | 2. Enter the install command, for example: 60 | 61 | command> install - - 62 | 63 | The system will create 3 new virtual devices. One of the devices has 64 | name "com0com - bus for serial port pair emulator" and other two of 65 | them have name "com0com - serial port emulator" and located on CNCAn 66 | and CNCBn ports. 67 | 68 | To get more info enter the help command, for example: 69 | 70 | command> help 71 | 72 | Alternatively to setup ports you can invoke GUI-based setup utility by 73 | launching Setup shortcut (Microsoft .NET Framework 2.0 is required). 74 | 75 | TESTING 76 | ======= 77 | 78 | 1. Start the HyperTerminal on CNCA0 port. 79 | 2. Start the HyperTerminal on CNCB0 port. 80 | 3. The output to CNCA0 port should be the input from CNCB0 port and 81 | vice versa. 82 | 83 | 84 | UNINSTALLING 85 | ============ 86 | 87 | Simply launch the com0com's Uninstall shortcut in the Start Menu or remove 88 | the "Null-modem emulator (com0com)" entry from the "Add/Remove Programs" 89 | section in the Control Panel. An uninstallation wizard will guide 90 | you through the required steps. 91 | 92 | HINT: To uninstall the old version of com0com (distributed w/o installer) 93 | install the new one and then uninstall it. 94 | 95 | 96 | FAQs & HOWTOs 97 | ============= 98 | 99 | Q. Is it possible to run com0com on Windows 9x platform? 100 | A. No, it is not possible. You need Windows 2000 platform or newer. 101 | 102 | Q. Is it possible to install or uninstall com0com silently (with no user 103 | intervention and no user interface)? 104 | A. Yes, it's possible with /S option, for example: 105 | 106 | setup.exe /S 107 | "%ProgramFiles%\com0com\uninstall.exe" /S 108 | 109 | You can specify the installation directory with /D option, for example: 110 | 111 | setup.exe /S /D=C:\Program Files\com0com 112 | 113 | NOTE: Silent installation of com0com will not install any port pairs by 114 | default {it can be overriden by setting CNC_INSTALL_CNCA0_CNCB0_PORTS 115 | and/or CNC_INSTALL_COMX_COMX_PORTS environment variables). 116 | 117 | Q. What are the other setup.exe command line options? 118 | A. The command line options of setup.exe and uninstall.exe listed in 119 | NSIS Users Manual, section 3.2 Installer Usage: 120 | 121 | http://nsis.sourceforge.net/Docs/Chapter3.html#3.2 122 | 123 | Additionally the following environment variables can be used. 124 | 125 | To change behaviour of setup.exe: 126 | 127 | CNC_INSTALL_START_MENU_SHORTCUTS={YES|NO} - select/unselect "Start Menu Shortcuts" 128 | CNC_INSTALL_CNCA0_CNCB0_PORTS={YES|NO} - select/unselect "CNCA0 <-> CNCB0" 129 | CNC_INSTALL_COMX_COMX_PORTS={YES|NO} - select/unselect "COM# <-> COM#" 130 | CNC_INSTALL_SKIP_SETUP_PREINSTALL={YES|NO} - skip preinstalling/updating driver 131 | 132 | To change behaviour of uninstall.exe: 133 | 134 | CNC_UNINSTALL_SKIP_SETUP_UNINSTALL={YES|NO} - skip uninstalling devices and driver 135 | 136 | Q. Is it possible to change the names CNCA0 and CNCB0 to COM8 and COM9? 137 | A. Yes, it's possible. To change the names: 138 | 139 | 1. Launch the Setup Command Prompt shortcut. 140 | 2. Enter the change commands, for example: 141 | 142 | command> change CNCA0 PortName=COM8 143 | command> change CNCB0 PortName=COM9 144 | 145 | Alternatively you can set names to 'COM#', for example: 146 | 147 | command> change CNCA0 PortName=COM# 148 | command> change CNCB0 PortName=COM# 149 | 150 | If parameter 'PortName=COM#' is used then the Ports class installer will be 151 | invoked to set the real port name. The Ports class installer selects the COM 152 | port number and sets the real port name to COM, where is the selected 153 | port number. After installing the Ports class port you can use the list 154 | command to get the real port name and the parameter RealPortName=COM to 155 | change the real port name, for example: 156 | 157 | command> list 158 | CNCA0 PortName=COM#,RealPortName=COM3 159 | CNCB0 PortName=COM#,RealPortName=COM4 160 | command> change CNCA0 RealPortName=COM8 161 | command> change CNCB0 RealPortName=COM9 162 | command> list 163 | CNCA0 PortName=COM#,RealPortName=COM8 164 | CNCB0 PortName=COM#,RealPortName=COM9 165 | 166 | Q. The baud rate setting does not seem to make a difference: data is always 167 | transferred at the same speed. How to enable the baud rate emulation? 168 | A. To enable baud rate emulation for transferring data from CNCA0 to CNCB0: 169 | 170 | 1. Launch the Setup Command Prompt shortcut. 171 | 2. Enter the change command, for example: 172 | 173 | command> change CNCA0 EmuBR=yes 174 | 175 | Q. The HyperTerminal test succeeds, but I get a failure when trying to open the 176 | port with CreateFile("CNCA0", ...). GetLastError() returns ERROR_FILE_NOT_FOUND. 177 | A. You must prefix the port name with the special characters "\\.\". Try to open 178 | the port with CreateFile("\\\\.\\CNCA0", ...). 179 | 180 | Q. My application hangs during its startup when it sends anything to one paired 181 | COM port. The only way to unhang it is to start HyperTerminal, which is connected 182 | to the other paired COM port. I didn't have this problem with physical serial 183 | ports. 184 | A. Your application can hang because receive buffer overrun is disabled by 185 | default. You can fix the problem by enabling receive buffer overrun for the 186 | receiving port. Also, to prevent some flow control issues you need to enable 187 | baud rate emulation for the sending port. So, if your application use port CNCA0 188 | and other paired port is CNCB0, then: 189 | 190 | 1. Launch the Setup Command Prompt shortcut. 191 | 2. Enter the change commands, for example: 192 | 193 | command> change CNCB0 EmuOverrun=yes 194 | command> change CNCA0 EmuBR=yes 195 | 196 | Q. When the corresponding port of a pair is not open, some characters will remain 197 | in the ouput buffer of the sending port and be output upon the next connection. 198 | Any clue on a possible workaround? 199 | A. It's a correct behavior if receive buffer overrun is disabled (by default). If 200 | you need behavior where those characters should be lost (like real null modem do) 201 | then enable receive buffer overrun for the receiving port. Also, to prevent some 202 | flow control issues enable baud rate emulation for the sending port. So, if 203 | sending port is CNCA0 and receiving port is CNCB0, then: 204 | 205 | 1. Launch the Setup Command Prompt shortcut. 206 | 2. Enter the change commands, for example: 207 | 208 | command> change CNCB0 EmuOverrun=yes 209 | command> change CNCA0 EmuBR=yes 210 | 211 | Q. I have to write an application connected to one side of the com0com port pair, 212 | and I don't want users to 'see' all the virtual ports created by com0com, but 213 | only the really available ones. 214 | A. if your application use port CNCB0 and other (used by users) paired port is CNCA0, 215 | then CNCB0 can be 'hidden' and CNCA0 can be 'shown' on opening CNCB0 by your 216 | application. To enable it: 217 | 218 | 1. Launch the Setup Command Prompt shortcut. 219 | 2. Enter the change commands: 220 | 221 | command> change CNCB0 ExclusiveMode=yes 222 | command> change CNCA0 PlugInMode=yes 223 | 224 | Q. When I add a port pair, why does Windows XP always pops up a Found New Hardware 225 | Wizard? The drivers are already there and it can install them silently in the 226 | background and report when the device is ready. 227 | A. It's because there is not signed com0com.cat catalog file. It can be created on 228 | your test computer by this way: 229 | 230 | 1. Create a catalog file, for example: 231 | 232 | cd "C:\Program Files\com0com" 233 | inf2cat /driver:. /os:XP_X86 234 | 235 | 2. Create a test certificate, for example: 236 | 237 | makecert -r -n "CN=com0com (test)" -sv com0com.pvk com0com.cer 238 | pvk2pfx -pvk com0com.pvk -spc com0com.cer -pfx com0com.pfx 239 | 240 | 3. Sign the catalog file by test certificate, for example: 241 | 242 | signtool sign /v /f com0com.pfx com0com.cat 243 | 244 | 4. Install a test certificate to the Trusted Root Certification Authorities 245 | certificate store and the Trusted Publishers certificate store, for example: 246 | 247 | certmgr -add com0com.cer -s -r localMachine root 248 | certmgr -add com0com.cer -s -r localMachine trustedpublisher 249 | 250 | The inf2cat, makecert, pvk2pfx, signtool and certmgr tools are included in the 251 | Windows Driver Kit (WDK). 252 | 253 | Alternatively you can cancel Found New Hardware Wizard and install driver by 254 | update command, for example: 255 | 256 | setupc install - - 257 | setupc update 258 | 259 | Additionally you can temporary suppress Plug and Play-related UI messages, for 260 | example: 261 | 262 | reg add HKLM\Software\Policies\Microsoft\Windows\DeviceInstall\Settings /v SuppressNewHWUI /t REG_DWORD /d 1 /f 263 | setupc install - - 264 | setupc update 265 | reg add HKLM\Software\Policies\Microsoft\Windows\DeviceInstall\Settings /v SuppressNewHWUI /t REG_DWORD /d 0 /f 266 | 267 | See http://support.microsoft.com/kb/938596 for more info. 268 | 269 | Q. How to monitor and get the paired port settings (baud rate, byte size, parity 270 | and stop bits)? 271 | A. It can be done with extended IOCTL_SERIAL_LSRMST_INSERT. See example in 272 | 273 | http://com0com.sourceforge.net/examples/LSRMST_INSERT/tstser.cpp 274 | 275 | Q. To transfer state to CTS and DSR they wired to RTS and DTR. How to transfer 276 | state to DCD and RING? 277 | A. The OUT1 can be wired to DCD and OUT2 to RING. Use extended 278 | IOCTL_SERIAL_SET_MODEM_CONTROL and IOCTL_SERIAL_GET_MODEM_CONTROL to change 279 | state of OUT1 and OUT2. See example in 280 | 281 | http://com0com.sourceforge.net/examples/MODEM_CONTROL/tstser.cpp 282 | 283 | Q. What version am I running? 284 | A. In the device manager, the driver properties page shows the version and date 285 | of the INF files, while the driver details page shows a version of 286 | com0com.sys file. The version of com0com.sys file is the version that you 287 | are running. 288 | 289 | Q. I'm able to use some application to talk to some hardware using com2tcp when 290 | both the com2tcp 'server' and 'client' are running on the same computer. 291 | When I try to move the client to a remote computer the application gives me 292 | a timeout message and has no settings to increase the timeout. How to fix 293 | the problem? 294 | A. Try to ajust AddRTTO and AddRITO params for application's COM port: 295 | 296 | 1. Launch the Setup Command Prompt shortcut. 297 | 2. Enter the change command, for example: 298 | 299 | command> change CNCA0 AddRTTO=100,AddRITO=100 300 | 301 | Q. I would like to be able to add, remove and rename virtual comm ports from my 302 | own custom application. Is there an API that I can use or some command line 303 | utility that will do the job? 304 | A. The setupc.exe is a command line utility that will do the job. To get more 305 | info enter: 306 | 307 | setupc help 308 | 309 | BTW: The setupg.exe is a GUI wrapper for setupc.exe. 310 | 311 | Q. I need to use com0com ports with an application that doesn't recognize 312 | com0com ports as "real" com ports. It does not see a com0com port even 313 | though I have changed it's name to COMx. Is there a com0com settings that 314 | will make the port appear to be a "real" com port? 315 | A. Yes, it is. You should put the port to the Ports class, for example: 316 | 317 | 1. Launch the Setup Command Prompt shortcut. 318 | 2. Install the pair of ports, were one of them has name COM#, for example: 319 | 320 | command> install PortName=COM# - 321 | 322 | Q. I have to somehow add a "fake" PNP device in device manager and have it 323 | connected under COM3. I use PNPComSimulator (http://www.bds.dogma.net/pnp_part2.htm), 324 | which can fake a PNP Serial device's response when polled by DevManager. 325 | Is it possible to have the device manager look for PNP equipement via com0com? 326 | A. Yes, it is. The simplest way is to put the port to the Ports class, for example: 327 | 328 | 1. Launch the Setup Command Prompt shortcut. 329 | 2. Install the pair of ports, were one of them has name COM#, for example: 330 | 331 | command> install 0 PortName=COM# - 332 | 333 | After installing the Ports class port you can use the list command to get 334 | the real port name, for example: 335 | 336 | command> list 337 | CNCA0 PortName=COM#,RealPortName=COM3 338 | CNCB0 PortName=- 339 | 340 | Q. Is it possible to configure the com0com to randomly corrupt the data? It 341 | would be nice to have this feature so that we can test our application 342 | robustness. 343 | A. Yes, it's possible by setting EmuNoise parameter: 344 | 345 | 1. Launch the Setup Command Prompt shortcut. 346 | 2. Enter the change command, for example: 347 | 348 | command> change CNCA0 EmuNoise=0.00001,EmuBR=yes,EmuOverrun=yes 349 | command> change CNCB0 EmuNoise=0.00001,EmuBR=yes,EmuOverrun=yes 350 | 351 | Now each character frame (including idle frames) will be corrupted with 352 | probability 0.00001. 353 | 354 | Q. What is the maximum number of port pairs that can be defined? 355 | A. It depends from your system. The com0com itself has internal limit 356 | 1000000 port pairs. 357 | 358 | Q. In my application, users could be installing up to 250 com port pairs. 359 | Initially, the installation is fairly quick, but each additional com port 360 | generally takes longer to install than the previous one. It quickly 361 | becomes unacceptable for a user to be expected to wait for the installation. 362 | A. It's because the installing of each next port pair requires to update driver 363 | for all installed pairs. You can speed up installing of multiple com port 364 | pairs by using install commands with --no-update option and then use 365 | install command w/o --no-update option, for example: 366 | 367 | command> --no-update install - - 368 | command> --no-update install - - 369 | ... 370 | command> --no-update install - - 371 | command> install 372 | 373 | The example of the batch program: 374 | 375 | cd /D "%ProgramFiles%\com0com" 376 | FOR /L %%i IN (0,1,249) DO setupc --no-update install - - 377 | setupc install 378 | 379 | Q. I am using the 64-bit version of com0com and I am having trouble. I'd like 380 | to debug this, but I can not find any free serial port monitor software, 381 | like portmon that works with a 64-bit OS. Does anyone know of any? 382 | A. You can try to use internal com0com's tracing for debuging: 383 | 384 | - get trace.reg file from com0com's source; 385 | - import trace.reg to the Registry; 386 | - reload driver (or reboot system); 387 | - do your tests and watch results in C:\com0com.log file. 388 | 389 | To disable tracing reinstall com0com or import trace_disable.reg to the 390 | Registry and reload driver. 391 | -------------------------------------------------------------------------------- /bin/Debug/com0com_x86/cncport.inf: -------------------------------------------------------------------------------- 1 | ;****************************************************************************** 2 | ; 3 | ; cncport.inf 4 | ; 5 | ; Installation file for the Null-modem emulator driver. 6 | ; 7 | ; Copyright (c) 2010-2012 Vyacheslav Frolov 8 | ; 9 | ;****************************************************************************** 10 | 11 | [Version] 12 | Signature = "$Windows NT$" 13 | Provider = %VF% 14 | Class = CNCPorts 15 | ClassGUID = {df799e12-3c56-421b-b298-b6d3642bc878} 16 | CatalogFile = com0com.cat 17 | ; MM/DD/YYYY 18 | DriverVer = 06/04/2012,3.0.0.0 19 | UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} 20 | 21 | ;****************************************************************************** 22 | ; 23 | ; Driver information 24 | ; 25 | ;****************************************************************************** 26 | 27 | [Manufacturer] 28 | %VF% = com0com, NTx86, NTia64, NTamd64 29 | 30 | [ControlFlags] 31 | ExcludeFromSelect = com0com\cncport 32 | 33 | [com0com] 34 | %com0com.PortDesc% = com0com_inst_port, com0com\cncport 35 | 36 | [com0com.NTx86] 37 | %com0com.PortDesc% = com0com_inst_port, com0com\cncport 38 | 39 | [com0com.NTia64] 40 | %com0com.PortDesc% = com0com_inst_port, com0com\cncport 41 | 42 | [com0com.NTamd64] 43 | %com0com.PortDesc% = com0com_inst_port, com0com\cncport 44 | 45 | ;****************************************************************************** 46 | ; 47 | ; Port install section 48 | ; 49 | ;****************************************************************************** 50 | 51 | [com0com_inst_port] 52 | AddReg = com0com_AddReg 53 | ;Include = msports.inf 54 | ;Needs = SerialEnumerator.NT 55 | 56 | [com0com_inst_port.Services] 57 | AddService = com0com, %SPSVCINST_ASSOCSERVICE%, com0com_Service_Inst, com0com_EventLog_Inst 58 | ;Include = msports.inf 59 | ;Needs = SerialEnumerator.NT.Services 60 | 61 | [com0com_inst_port.HW] 62 | AddReg = com0com_HW_AddReg 63 | 64 | [com0com_AddReg] 65 | 66 | [com0com_HW_AddReg] 67 | ;HKR,,"UpperFilters",0x00010000,"serenum" 68 | 69 | ;****************************************************************************** 70 | ; 71 | ; Common section 72 | ; 73 | ;****************************************************************************** 74 | 75 | [com0com_Service_Inst] 76 | DisplayName = %com0com.SrvDesc% 77 | ServiceType = %SERVICE_KERNEL_DRIVER% 78 | StartType = %SERVICE_DEMAND_START% 79 | ErrorControl = %SERVICE_ERROR_NORMAL% 80 | ServiceBinary = %12%\com0com.sys 81 | 82 | [com0com_EventLog_Inst] 83 | AddReg = com0com_EventLog_AddReg 84 | 85 | [com0com_EventLog_AddReg] 86 | HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\com0com.sys" 87 | HKR,,TypesSupported,%REG_DWORD%,7 88 | 89 | ;****************************************************************************** 90 | ; 91 | ; Strings 92 | ; 93 | ;****************************************************************************** 94 | 95 | [Strings] 96 | 97 | SPSVCINST_ASSOCSERVICE = 0x00000002 98 | 99 | REG_EXPAND_SZ = 0x00020000 100 | REG_DWORD = 0x00010001 101 | 102 | SERVICE_KERNEL_DRIVER = 1 103 | SERVICE_DEMAND_START = 3 104 | SERVICE_ERROR_NORMAL = 1 105 | 106 | VF = "Vyacheslav Frolov" 107 | com0com.PortDesc = "com0com - serial port emulator" 108 | com0com.SrvDesc = "com0com - emulates the serial ports interconnected via a null-modem cable" 109 | 110 | ;****************************************************************************** 111 | -------------------------------------------------------------------------------- /bin/Debug/com0com_x86/com0com.cat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allweshare/TCP2COM/3ec58dd62900ec832f8b7b73df621ce2ec52c44c/bin/Debug/com0com_x86/com0com.cat -------------------------------------------------------------------------------- /bin/Debug/com0com_x86/com0com.inf: -------------------------------------------------------------------------------- 1 | ;****************************************************************************** 2 | ; 3 | ; com0com.inf 4 | ; 5 | ; Installation file for the Null-modem emulator driver. 6 | ; 7 | ; Copyright (c) 2004-2012 Vyacheslav Frolov 8 | ; 9 | ;****************************************************************************** 10 | 11 | [Version] 12 | Signature = "$Windows NT$" 13 | Provider = %VF% 14 | Class = CNCPorts 15 | ClassGUID = {df799e12-3c56-421b-b298-b6d3642bc878} 16 | CatalogFile = com0com.cat 17 | ; MM/DD/YYYY 18 | DriverVer = 06/04/2012,3.0.0.0 19 | UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} 20 | 21 | ;****************************************************************************** 22 | ; 23 | ; Class section 24 | ; 25 | ;****************************************************************************** 26 | 27 | [ClassInstall32] 28 | AddReg = com0com_ClassReg 29 | 30 | [com0com_ClassReg] 31 | HKR,,,0,%ClassName% 32 | HKR,,Icon,,-23 33 | 34 | ;****************************************************************************** 35 | ; 36 | ; Source and Destination information 37 | ; 38 | ;****************************************************************************** 39 | 40 | [SourceDisksNames] 41 | 1 = %DiskId1%,,,"" 42 | 43 | [SourceDisksFiles] 44 | com0com.sys = 1,, 45 | 46 | [DestinationDirs] 47 | com0com_CopyDrivers = 12 48 | 49 | [com0com_CopyDrivers] 50 | com0com.sys 51 | 52 | ;****************************************************************************** 53 | ; 54 | ; Driver information 55 | ; 56 | ;****************************************************************************** 57 | 58 | [Manufacturer] 59 | %VF% = com0com, NTx86, NTia64, NTamd64 60 | 61 | [com0com] 62 | %com0com.BusDesc% = com0com_inst, root\com0com 63 | 64 | [com0com.NTx86] 65 | %com0com.BusDesc% = com0com_inst, root\com0com 66 | 67 | [com0com.NTia64] 68 | %com0com.BusDesc% = com0com_inst, root\com0com 69 | 70 | [com0com.NTamd64] 71 | %com0com.BusDesc% = com0com_inst, root\com0com 72 | 73 | ;****************************************************************************** 74 | ; 75 | ; Bus install section 76 | ; 77 | ;****************************************************************************** 78 | 79 | [com0com_inst] 80 | AddReg = com0com_AddReg 81 | CopyFiles = com0com_CopyDrivers 82 | CopyINF = cncport.inf 83 | ;CopyINF = comport.inf 84 | 85 | [com0com_inst.Services] 86 | AddService = com0com, %SPSVCINST_ASSOCSERVICE%, com0com_Service_Inst, com0com_EventLog_Inst 87 | 88 | [com0com_AddReg] 89 | 90 | ;****************************************************************************** 91 | ; 92 | ; Common section 93 | ; 94 | ;****************************************************************************** 95 | 96 | [com0com_Service_Inst] 97 | DisplayName = %com0com.SrvDesc% 98 | ServiceType = %SERVICE_KERNEL_DRIVER% 99 | StartType = %SERVICE_DEMAND_START% 100 | ErrorControl = %SERVICE_ERROR_NORMAL% 101 | ServiceBinary = %12%\com0com.sys 102 | 103 | [com0com_EventLog_Inst] 104 | AddReg = com0com_EventLog_AddReg 105 | 106 | [com0com_EventLog_AddReg] 107 | HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\com0com.sys" 108 | HKR,,TypesSupported,%REG_DWORD%,7 109 | 110 | ;****************************************************************************** 111 | ; 112 | ; Strings 113 | ; 114 | ;****************************************************************************** 115 | 116 | [Strings] 117 | 118 | SPSVCINST_ASSOCSERVICE = 0x00000002 119 | 120 | REG_EXPAND_SZ = 0x00020000 121 | REG_DWORD = 0x00010001 122 | 123 | SERVICE_KERNEL_DRIVER = 1 124 | SERVICE_DEMAND_START = 3 125 | SERVICE_ERROR_NORMAL = 1 126 | 127 | DiskId1 = "Installation Disk #1 (com0com - Null-modem emulator)" 128 | VF = "Vyacheslav Frolov" 129 | com0com.BusDesc = "com0com - bus for serial port pair emulator" 130 | com0com.SrvDesc = "com0com - emulates the serial ports interconnected via a null-modem cable" 131 | ClassName = "com0com - serial port emulators" 132 | 133 | ;****************************************************************************** 134 | -------------------------------------------------------------------------------- /bin/Debug/com0com_x86/com0com.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allweshare/TCP2COM/3ec58dd62900ec832f8b7b73df621ce2ec52c44c/bin/Debug/com0com_x86/com0com.sys -------------------------------------------------------------------------------- /bin/Debug/com0com_x86/comport.inf: -------------------------------------------------------------------------------- 1 | ;****************************************************************************** 2 | ; 3 | ; comport.inf 4 | ; 5 | ; Installation file for the Null-modem emulator driver. 6 | ; 7 | ; Copyright (c) 2010-2012 Vyacheslav Frolov 8 | ; 9 | ;****************************************************************************** 10 | 11 | [Version] 12 | Signature = "$Windows NT$" 13 | Provider = %VF% 14 | Class = Ports 15 | ClassGUID = {4D36E978-E325-11CE-BFC1-08002BE10318} 16 | CatalogFile = com0com.cat 17 | ; MM/DD/YYYY 18 | DriverVer = 06/04/2012,3.0.0.0 19 | UninstallInfTag = {df799e12-3c56-421b-b298-b6d3642bc878} 20 | 21 | ;****************************************************************************** 22 | ; 23 | ; Driver information 24 | ; 25 | ;****************************************************************************** 26 | 27 | [Manufacturer] 28 | %VF% = com0com, NTx86, NTia64, NTamd64 29 | 30 | [ControlFlags] 31 | ExcludeFromSelect = com0com\comport 32 | 33 | [com0com] 34 | %com0com.PortDesc% = com0com_inst_port, com0com\comport 35 | 36 | [com0com.NTx86] 37 | %com0com.PortDesc% = com0com_inst_port, com0com\comport 38 | 39 | [com0com.NTia64] 40 | %com0com.PortDesc% = com0com_inst_port, com0com\comport 41 | 42 | [com0com.NTamd64] 43 | %com0com.PortDesc% = com0com_inst_port, com0com\comport 44 | 45 | ;****************************************************************************** 46 | ; 47 | ; Port install section 48 | ; 49 | ;****************************************************************************** 50 | 51 | [com0com_inst_port] 52 | AddReg = com0com_AddReg 53 | Include = msports.inf 54 | Needs = SerialEnumerator.NT 55 | 56 | [com0com_inst_port.Services] 57 | AddService = com0com, %SPSVCINST_ASSOCSERVICE%, com0com_Service_Inst, com0com_EventLog_Inst 58 | Include = msports.inf 59 | Needs = SerialEnumerator.NT.Services 60 | 61 | [com0com_inst_port.HW] 62 | AddReg = com0com_HW_AddReg 63 | 64 | [com0com_AddReg] 65 | ;HKR,,PortSubClass,1,01 66 | ;HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" 67 | 68 | [com0com_HW_AddReg] 69 | HKR,,"UpperFilters",0x00010000,"serenum" 70 | 71 | ;****************************************************************************** 72 | ; 73 | ; Common section 74 | ; 75 | ;****************************************************************************** 76 | 77 | [com0com_Service_Inst] 78 | DisplayName = %com0com.SrvDesc% 79 | ServiceType = %SERVICE_KERNEL_DRIVER% 80 | StartType = %SERVICE_DEMAND_START% 81 | ErrorControl = %SERVICE_ERROR_NORMAL% 82 | ServiceBinary = %12%\com0com.sys 83 | 84 | [com0com_EventLog_Inst] 85 | AddReg = com0com_EventLog_AddReg 86 | 87 | [com0com_EventLog_AddReg] 88 | HKR,,EventMessageFile,%REG_EXPAND_SZ%,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\com0com.sys" 89 | HKR,,TypesSupported,%REG_DWORD%,7 90 | 91 | ;****************************************************************************** 92 | ; 93 | ; Strings 94 | ; 95 | ;****************************************************************************** 96 | 97 | [Strings] 98 | 99 | SPSVCINST_ASSOCSERVICE = 0x00000002 100 | 101 | REG_EXPAND_SZ = 0x00020000 102 | REG_DWORD = 0x00010001 103 | 104 | SERVICE_KERNEL_DRIVER = 1 105 | SERVICE_DEMAND_START = 3 106 | SERVICE_ERROR_NORMAL = 1 107 | 108 | VF = "Vyacheslav Frolov" 109 | com0com.PortDesc = "com0com - serial port emulator" 110 | com0com.SrvDesc = "com0com - emulates the serial ports interconnected via a null-modem cable" 111 | 112 | ;****************************************************************************** 113 | -------------------------------------------------------------------------------- /bin/Debug/config.ini: -------------------------------------------------------------------------------- 1 | [TCPServer] 2 | HOST=127.0.0.1 3 | PORT=8888 4 | COMP=COM3 5 | BAUD=19200 6 | DATB=8 7 | PARI=None 8 | -------------------------------------------------------------------------------- /include/CommListenerBase.h: -------------------------------------------------------------------------------- 1 | #ifndef COMMLISTENERBASE_H 2 | #define COMMLISTENERBASE_H 3 | 4 | #include 5 | 6 | class CommListenerBase : public wxThread 7 | { 8 | public: 9 | virtual ~CommListenerBase(){} 10 | virtual wxThread::ExitCode Entry() = 0; 11 | virtual void SetBrock(bool setQuit) = 0; 12 | 13 | protected: 14 | CommListenerBase():wxThread(wxTHREAD_DETACHED){} 15 | private: 16 | CommListenerBase(CommListenerBase& listener); 17 | }; 18 | 19 | #endif // COMMLISTENERBASE_H 20 | -------------------------------------------------------------------------------- /include/CommServiceBase.h: -------------------------------------------------------------------------------- 1 | #ifndef COMMSERVICEBASE_H 2 | #define COMMSERVICEBASE_H 3 | 4 | #include "CommListenerBase.h" 5 | #include "FrameObserver.h" 6 | #include 7 | #include 8 | 9 | class CommServiceBase 10 | { 11 | public: 12 | virtual ~CommServiceBase(); 13 | //打开通信链路 14 | virtual void open() = 0; 15 | //发送数据 16 | virtual void send(uint8_t * data,uint32_t size) = 0; 17 | //关闭通信链路 18 | virtual void close() = 0; 19 | //添加协议帧观察者 20 | void addObserver(FrameObserver* observer); 21 | //获取当前通信链路的监听线程 22 | CommListenerBase* getCommListener(); 23 | //通知所有观察者 24 | void notifyObservers(FrameObserver::DataSource source,uint8_t * data,size_t len); 25 | //通信链路是否已经打开 26 | bool isOpen(void); 27 | protected: 28 | //标识通信服务是否还在运行 29 | bool isRun; 30 | CommServiceBase(); //该类不可实例化 31 | 32 | /** 33 | * 每种通信模式使用自己的方式接收数据 34 | **/ 35 | CommListenerBase* listener; 36 | private: 37 | std::vector observerList; 38 | CommServiceBase(CommServiceBase& commService); 39 | 40 | }; 41 | 42 | #endif // COMMSERVICEBASE_H 43 | -------------------------------------------------------------------------------- /include/FactoryPreset.h: -------------------------------------------------------------------------------- 1 | #ifndef FACTORYPRESET_H 2 | #define FACTORYPRESET_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | using namespace std; 10 | 11 | class FactoryPreset 12 | { 13 | public: 14 | static FactoryPreset& getPreset() 15 | { 16 | static FactoryPreset preset; 17 | return preset; 18 | } 19 | shared_ptr config; //改用智能指针,不需要手动 delete 20 | const wxFileName app_exe_path; //可执行程序的绝对路径 21 | const wxString app_root_dir; //应用程序根目录 22 | const wxString cfg_file_path; //配置文件存放路径 23 | wxString vcom_driver_path; //分别对应32位或64位的驱动 24 | void SaveConfig(); //修改完任意一项配置都需要保存 25 | protected: 26 | 27 | private: 28 | //禁用拷贝构造 29 | FactoryPreset(); 30 | ~FactoryPreset(); 31 | FactoryPreset(const FactoryPreset&); 32 | void operator=(FactoryPreset&); 33 | }; 34 | 35 | #endif // FACTORYPRESET_H 36 | -------------------------------------------------------------------------------- /include/FrameObserver.h: -------------------------------------------------------------------------------- 1 | #ifndef FRAMEOBSERVER_H 2 | #define FRAMEOBSERVER_H 3 | 4 | #include 5 | 6 | class FrameObserver 7 | { 8 | public: 9 | //FrameObserver(); 10 | //virtual ~FrameObserver(); 11 | 12 | /** 13 | * 定义数据的来源 14 | **/ 15 | typedef enum { 16 | COMPORT, //串口 17 | NETWORK //网络 18 | } DataSource; 19 | 20 | //定义接收数据的事件 21 | virtual void onReciveData(DataSource source,uint8_t * data,size_t len) = 0; 22 | 23 | protected: 24 | 25 | private: 26 | }; 27 | 28 | #endif // FRAMEOBSERVER_H 29 | -------------------------------------------------------------------------------- /include/NetCommService.h: -------------------------------------------------------------------------------- 1 | #ifndef NETCOMMSERVICE_H 2 | #define NETCOMMSERVICE_H 3 | 4 | #include "CommServiceBase.h" 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | class NetCommService : public CommServiceBase 11 | { 12 | public: 13 | static NetCommService& getService() 14 | { 15 | static NetCommService service; 16 | return service; 17 | } 18 | ~NetCommService(); 19 | 20 | //打开通信链路 21 | void open(); 22 | //发送数据 23 | void send(uint8_t * data,uint32_t len); 24 | //关闭通信链路 25 | void close(); 26 | //统计客户端连接数 27 | wxAtomicInt clientCount; 28 | protected: 29 | 30 | private: 31 | const size_t RECV_BUFF_SIZE; 32 | uint8_t * recv_buff; //接收缓冲区 33 | const size_t SEND_BUFF_SIZE; 34 | uint8_t * send_buff; //发送缓冲区 35 | 36 | wxSocketServer* socketServer; //服务器端Socket 37 | 38 | //禁用拷贝构造 39 | NetCommService(); 40 | NetCommService(const NetCommService&); 41 | void operator=(NetCommService&); 42 | }; 43 | 44 | #endif // NETCOMMSERVICE_H 45 | -------------------------------------------------------------------------------- /include/SerialCommService.h: -------------------------------------------------------------------------------- 1 | #ifndef SERIALCOMMSERVICE_H 2 | #define SERIALCOMMSERVICE_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include "CommServiceBase.h" 9 | #include 10 | 11 | class SerialCommService : public CommServiceBase 12 | { 13 | public: 14 | static SerialCommService& getService() 15 | { 16 | static SerialCommService service; 17 | return service; 18 | } 19 | ~SerialCommService(); 20 | //打开通信链路 21 | void open(); 22 | //发送数据 23 | void send(uint8_t * data,uint32_t len); 24 | //关闭通信链路 25 | void close(); 26 | protected: 27 | 28 | private: 29 | HANDLE hComPort; //串口句柄 30 | const size_t RECV_BUFF_SIZE; 31 | uint8_t * recv_buff; //接收缓冲区 32 | const size_t SEND_BUFF_SIZE; 33 | uint8_t * send_buff; //发送缓冲区 34 | 35 | //禁用拷贝构造 36 | SerialCommService(); 37 | SerialCommService(const SerialCommService&); 38 | void operator=(SerialCommService&); 39 | }; 40 | 41 | #endif // SERIALCOMMSERVICE_H 42 | -------------------------------------------------------------------------------- /include/SerialPortListener.h: -------------------------------------------------------------------------------- 1 | #ifndef SERIALPORTLISTENER_H 2 | #define SERIALPORTLISTENER_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | #include 9 | #include "CommListenerBase.h" 10 | 11 | class SerialPortListener : public CommListenerBase 12 | { 13 | public: 14 | SerialPortListener(HANDLE hCom,uint8_t * recv_buff,const size_t recv_len); 15 | virtual ~SerialPortListener(); 16 | void SetBrock(bool setQuit); 17 | protected: 18 | wxThread::ExitCode Entry(); 19 | private: 20 | HANDLE hComPort; 21 | uint8_t * RECV_BUFF; 22 | const size_t BUFF_SIZE; 23 | volatile bool isQuit; 24 | int readComPort(uint8_t * read_buff,unsigned long readLen); 25 | }; 26 | 27 | #endif // SERIALPORTLISTENER_H 28 | -------------------------------------------------------------------------------- /include/TCPServerListener.h: -------------------------------------------------------------------------------- 1 | #ifndef TCPSERVERLISTENER_H 2 | #define TCPSERVERLISTENER_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "CommListenerBase.h" 11 | 12 | class TCPServerListener : public CommListenerBase 13 | { 14 | public: 15 | TCPServerListener(wxSocketServer* socket,uint8_t * recv_buff,const size_t recv_len); 16 | virtual ~TCPServerListener(); 17 | void SetBrock(bool setQuit); 18 | wxSocketBase* getClient(); 19 | void writeData(uint8_t* data,size_t len); 20 | protected: 21 | wxThread::ExitCode Entry(); 22 | private: 23 | wxSocketServer* serverSocket; 24 | uint8_t * RECV_BUFF; 25 | const size_t BUFF_SIZE; 26 | volatile bool isQuit; 27 | wxSocketInputStream* inputStream; 28 | wxSocketOutputStream* outputStream; 29 | wxSocketBase* socket; 30 | 31 | int readNetPort(uint8_t * read_buff,unsigned long readLen); 32 | }; 33 | 34 | #endif // TCPSERVERLISTENER_H 35 | -------------------------------------------------------------------------------- /include/VirtualCom.h: -------------------------------------------------------------------------------- 1 | #ifndef VIRTUALCOM_H 2 | #define VIRTUALCOM_H 3 | 4 | #include 5 | #include 6 | 7 | class VirtualCom 8 | { 9 | public: 10 | static VirtualCom& getManager() 11 | { 12 | static VirtualCom manager; 13 | return manager; 14 | } 15 | 16 | /** 17 | * 定义虚拟串口对 18 | * 每一对虚拟串口在创建时会自动生成序号 19 | **/ 20 | typedef struct { 21 | uint8_t index; 22 | wxString comA; 23 | wxString comB; 24 | } CommPairType; 25 | 26 | //以阻塞方式执行一个命令并返回其执行结果 27 | uint8_t execReadBack(wxString cmd,char* read_buff,size_t buff_len); 28 | 29 | //安装虚拟串口驱动 30 | uint8_t installDriver(); 31 | 32 | //加载虚拟串口列表 33 | void loadCommPairs(CommPairType* commPairs,size_t* numOfPairs); 34 | 35 | //创建一对新的虚拟串口 36 | void createComPair(wxString comportA,wxString comportB); 37 | 38 | //删除指定的一对虚拟串口 39 | void removeComPair(uint8_t pairIndex); 40 | 41 | protected: 42 | 43 | private: 44 | //禁用拷贝构造 45 | VirtualCom(); 46 | ~VirtualCom(); 47 | VirtualCom(const VirtualCom&); 48 | void operator=(VirtualCom&); 49 | }; 50 | 51 | #endif // VIRTUALCOM_H 52 | -------------------------------------------------------------------------------- /obj/Debug/resource.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/allweshare/TCP2COM/3ec58dd62900ec832f8b7b73df621ce2ec52c44c/obj/Debug/resource.res -------------------------------------------------------------------------------- /resource.rc: -------------------------------------------------------------------------------- 1 | aaaa ICON "wx/msw/std.ico" 2 | 3 | #include "wx/msw/wx.rc" 4 | 5 | -------------------------------------------------------------------------------- /src/CommServiceBase.cpp: -------------------------------------------------------------------------------- 1 | #include "CommServiceBase.h" 2 | 3 | using namespace std; 4 | 5 | CommServiceBase::CommServiceBase() 6 | { 7 | //ctor 8 | } 9 | 10 | void CommServiceBase::addObserver(FrameObserver* observer) 11 | { 12 | for(vector::iterator itert = observerList.begin();itert != observerList.end();) 13 | { 14 | if(observer == *itert) 15 | { 16 | itert = observerList.erase(itert); 17 | }else{ 18 | itert ++; 19 | } 20 | } 21 | observerList.push_back(observer); 22 | } 23 | 24 | /** 25 | * 通知所有观察者 26 | **/ 27 | void CommServiceBase::notifyObservers(FrameObserver::DataSource source,uint8_t * data,size_t len) 28 | { 29 | for(vector::iterator itert = observerList.begin();itert != observerList.end(); itert ++) 30 | { 31 | (*itert)->onReciveData(source,data,len); 32 | } 33 | } 34 | 35 | CommListenerBase* CommServiceBase::getCommListener() 36 | { 37 | return listener; 38 | } 39 | 40 | /** 41 | * 通信链路是否已经打开 42 | **/ 43 | bool CommServiceBase::isOpen(void) 44 | { 45 | return isRun; 46 | } 47 | 48 | CommServiceBase::~CommServiceBase() 49 | { 50 | //dtor 51 | } 52 | -------------------------------------------------------------------------------- /src/FactoryPreset.cpp: -------------------------------------------------------------------------------- 1 | #include "FactoryPreset.h" 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | using namespace std; 11 | 12 | FactoryPreset::FactoryPreset() : 13 | app_exe_path(wxStandardPaths::Get().GetExecutablePath()), //获取可执行程序路径 14 | app_root_dir(app_exe_path.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR)), 15 | cfg_file_path(app_root_dir+"config.ini") //配置文件路径 16 | { 17 | cout<<"FactoryPreset init ..."<SetPath("/TCPServer"); 37 | defaultCfg->Write("HOST","127.0.0.1"); //默认TCP服务器地址 38 | defaultCfg->Write("PORT","8888"); //默认TCP端口 39 | defaultCfg->Write("COMP","COM1"); //默认串口 40 | defaultCfg->Write("BAUD","19200"); //默认波特率 41 | defaultCfg->Write("DATB","8"); //默认数据位 42 | defaultCfg->Write("PARI","None"); //默认校验位 43 | 44 | defaultCfg->Save(outStream); 45 | //及时关闭文件流 46 | outStream.Close(); 47 | } 48 | 49 | /** 50 | * 到这一步必须确保已经存在默认配置 51 | **/ 52 | wxFileInputStream inStream(cfg_file_path); 53 | if(inStream.IsOk()) 54 | { 55 | config = make_shared(inStream); 56 | } 57 | 58 | } 59 | 60 | void FactoryPreset::SaveConfig() 61 | { 62 | if(config != NULL) 63 | { 64 | wxFileOutputStream outStream(cfg_file_path); //文件输出流 65 | if(outStream.IsOk()) 66 | { 67 | config->Save(outStream); 68 | } 69 | } 70 | } 71 | 72 | FactoryPreset::~FactoryPreset() 73 | { 74 | //dtor 75 | } 76 | -------------------------------------------------------------------------------- /src/NetCommService.cpp: -------------------------------------------------------------------------------- 1 | #include "NetCommService.h" 2 | #include "FactoryPreset.h" 3 | #include "TCPServerListener.h" 4 | 5 | //串口收发缓冲区都设置为10KB大小 6 | NetCommService::NetCommService() : clientCount(0),RECV_BUFF_SIZE(10240),SEND_BUFF_SIZE(10240) 7 | { 8 | recv_buff = new uint8_t[RECV_BUFF_SIZE]; 9 | send_buff = new uint8_t[SEND_BUFF_SIZE]; 10 | isRun = false; 11 | } 12 | 13 | /** 14 | * 开启网络端口 15 | **/ 16 | void NetCommService::open() 17 | { 18 | if(isRun) 19 | { 20 | close(); 21 | } 22 | 23 | //从配置文件中读取网络通信参数 24 | FactoryPreset& preset = FactoryPreset::getPreset(); 25 | preset.config->SetPath("/TCPServer"); 26 | wxString localIP = preset.config->Read("HOST"); 27 | wxString localPort = preset.config->Read("PORT"); 28 | 29 | cout<<"建立服务器连接: "<Ok()) 37 | { 38 | //不能启动服务器 39 | //更新状态栏显示信息 40 | cerr<<"服务器Socket不能启动! File:"<<__FILE__<<"; Line:"<<__LINE__<SetNotify(wxSOCKET_CONNECTION_FLAG); 44 | 45 | cout<<"服务器Socket成功启动! "<writeData(data,len); 62 | } 63 | } 64 | 65 | /** 66 | * 关闭网络端口 67 | **/ 68 | void NetCommService::close() 69 | { 70 | if(listener != NULL) 71 | { 72 | listener->SetBrock(true); 73 | } 74 | if(socketServer != NULL) 75 | { 76 | socketServer->Close(); 77 | } 78 | } 79 | 80 | NetCommService::~NetCommService() 81 | { 82 | delete [] recv_buff; 83 | delete [] send_buff; 84 | } 85 | -------------------------------------------------------------------------------- /src/SerialCommService.cpp: -------------------------------------------------------------------------------- 1 | #include "SerialCommService.h" 2 | #include "SerialPortListener.h" 3 | #include "FactoryPreset.h" 4 | 5 | //网络收发缓冲区都设置为10KB大小 6 | SerialCommService::SerialCommService() : RECV_BUFF_SIZE(10240),SEND_BUFF_SIZE(10240) 7 | { 8 | recv_buff = new uint8_t[RECV_BUFF_SIZE]; 9 | send_buff = new uint8_t[SEND_BUFF_SIZE]; 10 | isRun = false; 11 | } 12 | 13 | /** 14 | * 打开串口 15 | **/ 16 | void SerialCommService::open() 17 | { 18 | if(isRun) 19 | { 20 | close(); 21 | } 22 | //从配置文件中读取串口 23 | FactoryPreset& preset = FactoryPreset::getPreset(); 24 | preset.config->SetPath("/TCPServer"); 25 | 26 | wxString commPort = preset.config->Read("COMP"); 27 | wxString baudrate = preset.config->Read("BAUD"); 28 | wxString dataBits = preset.config->Read("DATB"); 29 | wxString parityBits = preset.config->Read("PARI"); 30 | wxString stopsBits = "1"; 31 | 32 | //这里串口号需要加前缀 33 | hComPort = CreateFile(commPort, //通信口 34 | GENERIC_READ|GENERIC_WRITE, //允许读写 35 | 0, //独占方式 36 | NULL, //安全属性 37 | OPEN_EXISTING, // 38 | FILE_FLAG_OVERLAPPED, //重叠IO,异步串口 39 | NULL); //不使用模板 40 | 41 | if(hComPort == INVALID_HANDLE_VALUE) 42 | { 43 | cerr<<"Can't open SerialPort: "<SetBrock(true); 141 | listener->TestDestroy(); 142 | // if(listener->Delete() == wxTHREAD_NO_ERROR) 143 | // { 144 | // cout<<"SerialPort Listener Has be Terminated !"<SetPath("/TCPServer"); 15 | cout<<"开始监听 "<Read("COMP")<<" 通信口!"< 6) 84 | { 85 | //如果数据量大于6字节 86 | for(i=0;i<3;i++) 87 | { 88 | cout<<"0x"<GetLocal(remoteAddr); 16 | cout<<"开始监听 "<Accept(true); 34 | if(socket == NULL) 35 | { 36 | Sleep(1000); //如果没有接收到连接休眠1秒,防止CPU占满 37 | }else{ 38 | 39 | wxIPV4address remoteAddr; 40 | socket->GetPeer(remoteAddr); 41 | cout<<"接收到客户端连接: "<SetFlags(wxSOCKET_WAITALL|wxSOCKET_BLOCK); 47 | socket->SetFlags(wxSOCKET_NOWAIT); 48 | inputStream = new wxSocketInputStream(*socket); 49 | outputStream = new wxSocketOutputStream(*socket); 50 | 51 | while(!TestDestroy()) 52 | { 53 | /** 54 | * 避免过多的占用系统CPU 55 | * 这里加一点休眠释放一点时间片 56 | * 取值应在100ms至500ms之间,取决于每两次接收数据的间隔 57 | * 如果取消掉该延迟会导致CPU占用率爆满 58 | **/ 59 | Sleep(200); 60 | 61 | if(isQuit == false) 62 | { 63 | //------------------------------------------ 64 | if(socket->IsData()) 65 | { //有新的数据接收到 66 | readNetPort(RECV_BUFF,BUFF_SIZE); 67 | } 68 | if(socket->IsDisconnected()) 69 | { //检测到客户端断开连接 70 | cout<<"检测到客户端断开连接! "<Close(); 72 | //递减计数 73 | if(netService.clientCount > 0) { 74 | wxAtomicDec(netService.clientCount); 75 | } 76 | break; 77 | } 78 | }else{ 79 | //当服务器要关闭时要先关掉所有客户端的连接 80 | socket->Close(); 81 | //递减客户端连接数 82 | if(netService.clientCount > 0) { 83 | wxAtomicDec(netService.clientCount); 84 | } 85 | isQuit = true; 86 | Delete(); 87 | break; 88 | } 89 | } 90 | } 91 | } 92 | return (wxThread::ExitCode)0; 93 | } 94 | 95 | /** 96 | * 向当前的输出流写入数据 97 | **/ 98 | void TCPServerListener::writeData(uint8_t* data,size_t len) 99 | { 100 | if(outputStream != NULL) { 101 | outputStream->Write(data,len); 102 | } 103 | } 104 | 105 | /** 106 | * 读取网口数据 107 | **/ 108 | int TCPServerListener::readNetPort(uint8_t * read_buff,unsigned long readLen) 109 | { 110 | size_t i = 0; 111 | inputStream->Read(read_buff,readLen); 112 | size_t dwBytesRead = inputStream->LastRead(); 113 | //---------------------------------------------------- 114 | //输出原始数据 115 | if(dwBytesRead > 6) 116 | { 117 | //如果数据量大于6字节 118 | for(i=0;i<3;i++) 119 | { 120 | cout<<"0x"<Destroy(); 158 | } 159 | } 160 | -------------------------------------------------------------------------------- /src/VirtualCom.cpp: -------------------------------------------------------------------------------- 1 | #include "VirtualCom.h" 2 | #include "FactoryPreset.h" 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | using namespace std; 10 | 11 | VirtualCom::VirtualCom() 12 | { 13 | 14 | } 15 | 16 | /** 17 | * 加载虚拟串口列表 18 | **/ 19 | void VirtualCom::loadCommPairs(CommPairType* commPairs,size_t* numOfPairs) 20 | { 21 | uint8_t pariCount = 0; 22 | uint8_t i = 0; 23 | long cvtIndex = 0; 24 | 25 | char* resp = new char[1024]; 26 | memset(resp,0,1024); 27 | 28 | FactoryPreset& preset = FactoryPreset::getPreset(); 29 | wxString cmdStr = preset.vcom_driver_path + " list"; 30 | 31 | execReadBack(cmdStr,resp,1024); 32 | cout< 2 | 3 | 4 | 网络转串口 5 | 1 6 | 300,500 7 | #93D6F2 8 | 9 | 10 | 11 | wxVERTICAL 12 | 13 | wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 14 | 5 15 | 91,12 16 | 17 | 18 | 19 | 20 | wxSYS_COLOUR_HIGHLIGHT 21 | 22 | 16 23 | 24 | bold 25 | 0 26 | swiss 27 | 黑体 28 | 29 | 30 | wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 31 | 5 32 | 33 | 34 | 35 | 2 36 | 0,1 37 | 38 | 39 | 40 | 41 | 10 42 | 43 | bold 44 | 0 45 | swiss 46 | 黑体 47 | 48 | 49 | wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 50 | 5 51 | 52 | 53 | 54 | 150,22 55 | 56 | wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL 57 | 5 58 | 59 | 60 | 61 | 62 | 63 | 64 | 10 65 | 66 | bold 67 | 0 68 | swiss 69 | 黑体 70 | 71 | 72 | wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 73 | 5 74 | 75 | 76 | 77 | 150,22 78 | 79 | wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL 80 | 5 81 | 82 | 83 | 84 | wxALL|wxEXPAND 85 | 5 86 | 87 | 88 | 89 | 10,3 90 | 91 | wxALL|wxEXPAND 92 | 5 93 | 94 | 95 | 96 | 4 97 | 98 | 99 | 100 | 101 | 10 102 | 103 | bold 104 | 0 105 | swiss 106 | 黑体 107 | 108 | 109 | wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 110 | 5 111 | 112 | 113 | 114 | 115 | 116 | COM10 117 | COM11 118 | 119 | 70,22 120 | 121 | 122 | wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL 123 | 5 124 | 125 | 126 | 127 | 128 | 129 | 130 | 10 131 | 132 | bold 133 | 0 134 | swiss 135 | 黑体 136 | 137 | 138 | wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 139 | 5 140 | 141 | 142 | 143 | 144 | 145 | 300 146 | 600 147 | 1200 148 | 2400 149 | 4800 150 | 9600 151 | 19200 152 | 38400 153 | 43000 154 | 56000 155 | 57600 156 | 115200 157 | 158 | 5 159 | 70,22 160 | 161 | 162 | wxTOP|wxBOTTOM|wxLEFT|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL 163 | 5 164 | 165 | 166 | 167 | 168 | 169 | 170 | 10 171 | 172 | bold 173 | 0 174 | swiss 175 | 黑体 176 | 177 | 178 | wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 179 | 5 180 | 181 | 182 | 183 | 184 | 185 | 6 186 | 7 187 | 8 188 | 189 | 2 190 | 70,22 191 | 192 | 193 | wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL 194 | 5 195 | 196 | 197 | 198 | 199 | 200 | 201 | 10 202 | 203 | bold 204 | 0 205 | swiss 206 | 黑体 207 | 208 | 209 | wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL 210 | 5 211 | 212 | 213 | 214 | 215 | 216 | None 217 | Odd 218 | Even 219 | Mark 220 | Space 221 | 222 | 0 223 | 70,22 224 | 225 | 226 | wxALL|wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL 227 | 5 228 | 229 | 230 | 231 | wxALL|wxEXPAND 232 | 5 233 | 234 | 235 | 236 | 237 | 238 | 239 | 1 240 | 241 | 10 242 | 243 | normal 244 | 0 245 | swiss 246 | 黑体 247 | 248 | 249 | 250 | wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 251 | 10 252 | 253 | 254 | 255 | 256 | 257 | 258 | 10 259 | 260 | normal 261 | 0 262 | swiss 263 | 黑体 264 | 265 | 266 | 267 | wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 268 | 10 269 | 270 | 271 | 272 | wxTOP|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 273 | 5 274 | 275 | 276 | 277 | 278 | 279 | 280 | 110,14 281 | 282 | 8 283 | 284 | normal 285 | 0 286 | swiss 287 | 黑体 288 | 289 | 290 | 291 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 292 | 5 293 | 294 | 295 | 296 | 297 | 3,10 298 | 299 | wxLEFT|wxRIGHT|wxEXPAND 300 | 5 301 | 302 | 303 | 304 | 305 | 110,14 306 | 307 | 8 308 | 309 | normal 310 | 0 311 | swiss 312 | 黑体 313 | 314 | 315 | 316 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 317 | 5 318 | 319 | 320 | 321 | wxTOP|wxLEFT|wxRIGHT|wxEXPAND 322 | 5 323 | 324 | 325 | 326 | 10,3 327 | 328 | wxALL|wxEXPAND 329 | 5 330 | 331 | 332 | 333 | 334 | wxSYS_COLOUR_HIGHLIGHT 335 | 336 | 16 337 | 338 | bold 339 | 0 340 | swiss 341 | 黑体 342 | 343 | 344 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 345 | 5 346 | 347 | 348 | 349 | -1 350 | 246,66 351 | 352 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 353 | 5 354 | 355 | 356 | 357 | 358 | 359 | 360 | COMx 361 | 58,22 362 | 363 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 364 | 5 365 | 366 | 367 | 368 | 369 | 370 | wxTOP|wxBOTTOM|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 371 | 5 372 | 373 | 374 | 375 | COMx 376 | 58,22 377 | 378 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 379 | 5 380 | 381 | 382 | 383 | 384 | 50,24 385 | 386 | 10 387 | 388 | normal 389 | 0 390 | swiss 391 | 黑体 392 | 393 | 394 | 395 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 396 | 5 397 | 398 | 399 | 400 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 401 | 5 402 | 403 | 404 | 405 | 406 | 407 | 408 | 65,24 409 | 410 | 10 411 | 412 | normal 413 | 0 414 | swiss 415 | 黑体 416 | 417 | 418 | 419 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 420 | 5 421 | 422 | 423 | 424 | 425 | 426 | 65,24 427 | 428 | 10 429 | 430 | normal 431 | 0 432 | swiss 433 | 黑体 434 | 435 | 436 | 437 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 438 | 5 439 | 440 | 441 | 442 | 443 | 444 | 65,24 445 | 446 | 10 447 | 448 | normal 449 | 0 450 | swiss 451 | 黑体 452 | 453 | 454 | 455 | wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 456 | 5 457 | 458 | 459 | 460 | wxBOTTOM|wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL 461 | 5 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | --------------------------------------------------------------------------------