| 453 | | |
| 454 | | |
| | 446 | == 問題発生 == |
| | 447 | |
| | 448 | しばらく動かして値をcamonitorしていると、あるタイミングで止まってしまう。[[br]] |
| | 449 | camonitorだけではわからず、IOCのasynログを出力してみると、温度レジスタのLSBに0x00が入った時以降、データが出力されなくなっていることが判明した。[[br]] |
| | 450 | |
| | 451 | |
| | 452 | {{{ |
| | 453 | 2017/09/07 07:20:18.514 HID1 write 5 |
| | 454 | ツH |
| | 455 | \302H\006\004\000 |
| | 456 | |
| | 457 | c2 48 06 04 00 |
| | 458 | 2017/09/07 07:20:18.517 HID1 write(raw) 65 |
| | 459 | ツH |
| | 460 | \302H\006\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 |
| | 461 | |
| | 462 | c2 48 06 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| | 463 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| | 464 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| | 465 | 00 00 00 00 00 |
| | 466 | 2017/09/07 07:20:18.544 HID1: wrote 5 bytes to 403:6030:FT27KQDF, return asynSuccess |
| | 467 | 2017/09/07 07:20:18.545 HID1 addr -1 queueRequest priority 0 from lockHolder |
| | 468 | 2017/09/07 07:20:18.546 HID1 schedule queueRequest timeout |
| | 469 | 2017/09/07 07:20:18.548 asynManager::portThread port=HID1 callback |
| | 470 | 2017/09/07 07:20:18.549 HID1: read 8 bytes from 403:6030:FT27KQDF, return asynSuccess |
| | 471 | 2017/09/07 07:20:18.551 HID1 read(raw) 8 |
| | 472 | ミ |
| | 473 | |
| | 474 | \320\004\016\n\200\200\000\000 |
| | 475 | |
| | 476 | d0 04 0e 0a 80 80 00 00 |
| | 477 | 2017/09/07 07:20:19.500 HID1 addr -1 queueRequest priority 0 not lockHolder |
| | 478 | 2017/09/07 07:20:19.501 HID1 schedule queueRequest timeout |
| | 479 | 2017/09/07 07:20:19.502 asynManager::portThread port=HID1 callback |
| | 480 | 2017/09/07 07:20:19.503 HID1 addr -1 queueRequest priority 0 not lockHolder |
| | 481 | 2017/09/07 07:20:19.505 HID1 schedule queueRequest timeout |
| | 482 | 2017/09/07 07:20:19.506 asynManager::portThread port=HID1 callback |
| | 483 | 2017/09/07 07:20:19.506 HID1: read 0 bytes from 403:6030:FT27KQDF, return asynSuccess |
| | 484 | 2017/09/07 07:20:19.507 HID1 read(raw) 0 |
| | 485 | |
| | 486 | 2017/09/07 07:20:19.508 HID1 write 5 |
| | 487 | ツH |
| | 488 | \302H\006\004\000 |
| | 489 | |
| | 490 | c2 48 06 04 00 |
| | 491 | 2017/09/07 07:20:19.510 HID1 write(raw) 65 |
| | 492 | ツH |
| | 493 | \302H\006\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 |
| | 494 | |
| | 495 | c2 48 06 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| | 496 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| | 497 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| | 498 | 00 00 00 00 00 |
| | 499 | 2017/09/07 07:20:19.527 HID1: wrote 5 bytes to 403:6030:FT27KQDF, return asynSuccess |
| | 500 | 2017/09/07 07:20:19.529 HID1 addr -1 queueRequest priority 0 from lockHolder |
| | 501 | 2017/09/07 07:20:19.529 HID1 schedule queueRequest timeout |
| | 502 | 2017/09/07 07:20:19.529 asynManager::portThread port=HID1 callback |
| | 503 | 2017/09/07 07:20:19.530 HID1: read 8 bytes from 403:6030:FT27KQDF, return asynSuccess |
| | 504 | 2017/09/07 07:20:19.531 HID1 read(raw) 8 |
| | 505 | ミ |
| | 506 | \320\004\016\000\200\200\000\000 |
| | 507 | |
| | 508 | d0 04 0e 00 80 80 00 00 |
| | 509 | 2017/09/07 07:20:20.501 HID1 addr -1 queueRequest priority 0 not lockHolder |
| | 510 | 2017/09/07 07:20:20.503 HID1 schedule queueRequest timeout |
| | 511 | 2017/09/07 07:20:20.505 asynManager::portThread port=HID1 callback |
| | 512 | 2017/09/07 07:20:20.506 HID1 addr -1 queueRequest priority 0 not lockHolder |
| | 513 | 2017/09/07 07:20:20.507 HID1 schedule queueRequest timeout |
| | 514 | 2017/09/07 07:20:20.508 asynManager::portThread port=HID1 callback |
| | 515 | 2017/09/07 07:20:20.509 HID1: read 0 bytes from 403:6030:FT27KQDF, return asynSuccess |
| | 516 | 2017/09/07 07:20:20.511 HID1 read(raw) 0 |
| | 517 | |
| | 518 | 2017/09/07 07:20:20.511 HID1 write 5 |
| | 519 | ツH |
| | 520 | \302H\006\004\000 |
| | 521 | |
| | 522 | c2 48 06 04 00 |
| | 523 | 2017/09/07 07:20:20.513 HID1 write(raw) 65 |
| | 524 | ツH |
| | 525 | \302H\006\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 |
| | 526 | |
| | 527 | c2 48 06 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| | 528 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| | 529 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |
| | 530 | 00 00 00 00 00 |
| | 531 | 2017/09/07 07:20:20.529 HID1: wrote 5 bytes to 403:6030:FT27KQDF, return asynSuccess |
| | 532 | 2017/09/07 07:20:20.530 HID1 addr -1 queueRequest priority 0 from lockHolder |
| | 533 | 2017/09/07 07:20:20.531 HID1 schedule queueRequest timeout |
| | 534 | 2017/09/07 07:20:20.531 asynManager::portThread port=HID1 callback |
| | 535 | 2017/09/07 07:20:22.535 HID1: read 0 bytes from 403:6030:FT27KQDF, return asynSuccess |
| | 536 | 2017/09/07 07:20:22.535 HID1 read(raw) 0 |
| | 537 | |
| | 538 | 2017/09/07 07:20:24.538 HID1: read 0 bytes from 403:6030:FT27KQDF, return asynSuccess |
| | 539 | 2017/09/07 07:20:24.538 HID1 read(raw) 0 |
| | 540 | |
| | 541 | 2017/09/07 07:20:26.541 HID1: read 0 bytes from 403:6030:FT27KQDF, return asynSuccess |
| | 542 | 2017/09/07 07:20:26.541 HID1 read(raw) 0 |
| | 543 | |
| | 544 | }}} |
| | 545 | |
| | 546 | この状態になると、IOCを止めるだけではダメで、USBコネクタを挿抜して再認識させないと復活しない。[[br]] |
| | 547 | |
| | 548 | 始めは、HIDAPIの方の問題かと考え、pythonでテストプログラムを書いて実行してみたが、LSBが0x00になっても止まることはなかった。[[br]] |
| | 549 | その時のスクリプトがこれ。[[br]] |
| | 550 | |
| | 551 | {{{ |
| | 552 | import hid |
| | 553 | import time |
| | 554 | import logging |
| | 555 | |
| | 556 | h = hid.device() |
| | 557 | h.open(0x0403, 0x6030, u"FT27KQDF") |
| | 558 | h.set_nonblocking(1) |
| | 559 | |
| | 560 | logging.basicConfig(format='[%(asctime)s]: %(message)s', |
| | 561 | level=logging.DEBUG) |
| | 562 | h.write([0xD0, 0x48, 0x06, 0x02, 0x03,0x80,0x00,0x00]) |
| | 563 | |
| | 564 | while True: |
| | 565 | try: |
| | 566 | wr = h.write([0xC2, 0x48, 0x06, 0x04, 0x00]) |
| | 567 | logging.debug("[W]" + str(wr)) |
| | 568 | |
| | 569 | rd = h.read(64) |
| | 570 | logging.debug("[R]" + str(rd)) |
| | 571 | time.sleep(1) |
| | 572 | except: |
| | 573 | break |
| | 574 | |
| | 575 | h.close() |
| | 576 | }}} |
| | 577 | |
| | 578 | asynかstreamdeviceのどちらかの問題の可能性が高いが、詳細は追っていないので現時点では原因は不明。 |