usb4java - flush不起作用

时间:2016-07-18 21:29:55

标签: caching usb buffer flush

我正在使用usb4java,我使用了帮助页面(http://usb4java.org/quickstart/javax-usb.html)上描述的示例,通过同步I / O(pipe.syncSubmit)在收据打印机上打印数据,每行以LF结尾( 10)刷新输出。

它适用于中国58mm型号,但当我连接到Epson 80mm打印机时,输出是随机切割的。大多数时候都缺少最后一行。

我想知道我是否需要做的不仅仅是发送LF,关闭管道并释放UsbInterface以保证所有字节都传输到打印机。在某种非大容量存储设备上是否存在某种刷新操作或写入缓存,我需要以某种方式停用它?

1 个答案:

答案 0 :(得分:0)

尝试使用pipe命令,最多包含4个字节的块,例如

import shapeless._
import lens._
import record._
import syntax.singleton._

trait A { val id: Int }
case class B(id: Int) extends A
case class C(id: Int, name: String) extends A

implicit val lgenA = new LabelledGeneric[A] {
  type Repr = Record.`'id -> Int`.T
  def to(a: A) : Repr = ('id ->> a.id) :: HNil
  def from(r: Repr): A = new A { val id = r('id) }
}

val idLens = lens[A] >> 'id

val b = B(7)
println(idLens.get(b)) // 7

作为最后一个字节,换行应该有10个(将输出刷新到打印机)。

这对我有帮助(虽然USB设备宣布的数据包大小为64)。不确定usb4java中是否存在错误或任何其他问题。