/ / Swift Send Hex Data Over TCP Socket - swift, zásuvky, tcp, hex

Swift Send Hex Data Over TCP Socket - swift, zásuvky, tcp, hex

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ď č. 1

Stačí 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é.