Pracujem na riešení na posielanie príkazov príkazu amiesto predaja tlačiareň a majú niektoré problémy dostať príkaz formát vpravo. Mám otvorenú zásuvku pre zariadenie a to funguje, pretože sa vytlačia nesprávne príkazy. Čo volá SPEC v tomto príkaze je poslať nasledovné:
1B 07 alebo v desiatkovej sústave 27 7. Ktorý v ASCII je ESC_KEY BEL. Jediným príkladom spec je pre .NET:
MSComm1.Output = Chr $ (& H1B) & Chr $ (& H07)
Čo som sa snažil:
// Socket je otvorený predtým pomocou CFStreamCreatePairWithSocketToHost.
var cmd = "27 07"
if let dataString = "(cmd)r".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false), let oStream = self.outputStream {
self.outputData.append(dataString)
if oStream.hasSpaceAvailable {
oStream.write(UnsafePointer((self.outputData.first! as NSData).bytes), maxLength: self.outputData.first!length)
}
}
Údaje sa tam dostávajú, ale myslím si, že formát správy je nesprávny. Akákoľvek pomoc by bola ocenená.
odpovede:
2 pre odpoveď č. 1Stačí vytvoriť byte (aka UInt8
) pole s údajmi, ktoré chcete odoslať a odovzdať ho priamo write()
metóda NSOutputStream
:
let cmd: [UInt8] = [0x1B, 0x07]
oStream.write(cmd, maxLength: cmd.count)
Všimnite si, že odosielate bajtov na výstupný prúd, nie hexadecimálne údaje, Nie je to vôbec rozdiel, ak vytvoríte pole s hexadecimálnym celočíselné literály ako je uvedené vyššie, alebo ako
let cmd: [UInt8] = [27, 7]
údaje sú úplne rovnaké.