2020/03/21

[golang][gousb]Write()やRead()から戻らない (2)

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 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。