我正在使用usb4java,我使用了帮助页面(http://usb4java.org/quickstart/javax-usb.html)上描述的示例,通过同步I / O(pipe.syncSubmit)在收据打印机上打印数据,每行以LF结尾( 10)刷新输出。
它适用于中国58mm型号,但当我连接到Epson 80mm打印机时,输出是随机切割的。大多数时候都缺少最后一行。
我想知道我是否需要做的不仅仅是发送LF,关闭管道并释放UsbInterface以保证所有字节都传输到打印机。在某种非大容量存储设备上是否存在某种刷新操作或写入缓存,我需要以某种方式停用它?
答案 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中是否存在错误或任何其他问题。