golangなのだが、どちらかといえばlibusbの方かもしれない。いや、USBか。
Pasoriからちまちまと受信とデコードを繰り返そうと考えていたので、まず3バイトreadして、次は2バイト受信して・・・というコードを書いていた。
が、USBデバイスはパケット単位でのアクセスだったと思う。
Endpointの値を見ても、
2020/03/21 22:04:51 InEndpoint= ep #4 IN (address 0x84) bulk [64 bytes]
2020/03/21 22:04:51 OutEndpoint= ep #4 OUT (address 0x04) bulk [64 bytes]
今回は64バイトなのだろう。
送信する方は一度に送っているのでよいのだが、受信の方は考えないといけない。
ACKとレスポンスを返してくるので、おそらくはACKで1パケット、あとはレスポンスで必要な分だけのパケット数というところか。
ACKの返信は脊髄反射的なものだったはずだ。レスポンスを返すよりもACKの方を先に返すはずだ。
だから、パケットとしてもきっとレスポンスと混ざることはない・・・と信じたい。
いや、そんなことを考えるよりは、ACKとレスポンスをデコードできるまで受信し続ける、の方が正しいのか。
ともかく、数バイトではなく、EndpointDescのMaxPacketSize単位にすると受信できそうだった。
そうなると、デコードの仕方も考え直さないとなぁ。。。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。