Việc là mình sử dụng POS command để gửi lệnh cho máy in. In chữ thì hoàn toàn bình thường. Tuy nhiên mình có gửi lệnh in hình máy không in hình mà in ra 1 loạt các ký tự. Đây là đoạn code mình làm để in
QByteArray printData = "\x12\x2A";
printData.append(image.width() );
printData.append(image.height() );
char bitIndex = 0;
char recordByte = 0x00;
// Convert the image to 32-bit format to handle transparency
QImage tempImage = image.convertToFormat(QImage::Format_ARGB32);
// Create a new image with 1-bit per pixel (monochrome)
QImage bitonalImage(tempImage.size(), QImage::Format_Mono);
bitonalImage.fill(Qt::white); // Set the background to white
// Iterate through each pixel in the image
for (int y = 0; y < tempImage.height(); ++y) {
for (int x = 0; x < tempImage.width(); ++x) {
// Get the color of the current pixel
QRgb color = tempImage.pixel(x, y);
// Calculate the intensity (brightness) of the pixel
int intensity = qGray(color);
if(intensity > 128){
recordByte = recordByte | ( 0x01 << bitIndex);
printf("*");
}else{
printf(" ");
}
bitIndex ++;
if(bitIndex > 7){
printData.append(recordByte);
bitIndex = 0 ;
recordByte = 0x00;
}
}
printf("\n");
}
mRs232_printer->sendData(printData.data(),printData.size());
Kết quả trên terninal với 1 bức hình 120 * 120 :
Máy in :