• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Không in được tiếng việt khi in máy in nhiệt (Kết nối Bluetooth)

Nơi trao đổi về các vấn đề trong lập trình Windows Forms, Console dùng cú pháp ngôn ngữ Visual Basic .NET và C#

Điều hành viên: tungblt, vuathongtin

muaphonui_2010
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 522
Ngày tham gia: T.Sáu 26/11/2010 1:15 pm
Đến từ: TP.HCM
Has thanked: 184 time
Been thanked: 30 time
Liên hệ:

Không in được tiếng việt khi in máy in nhiệt (Kết nối Bluetooth)

Gửi bàigửi bởi muaphonui_2010 » T.Bảy 13/04/2019 11:17 am

Chào các bạn.
Mình dùng đoạn code này để in ra máy in nhiệt cầm tay kết nối qua Bluetooth với điện thoại android.
Nhưng khi in tiếng việt thì nó bị lỗi font (nếu in tiếng anh thì nó bình thường).
Không biết mình thiếu đoạn mã nào hay không.
Mình đang dùng máy in POS- 5802LD (Mình thử tải phần mềm trên CH Play về in tiếng việt ra bình thường, nếu các bạn biết loại nào khác mà in được thì chỉ giúp mình với nhé
Mình làm theo bài viết này
https://ozaksut.com/xamarin-forms-bluetooth-printer-chapter-1-android/

đây là đoạn code của mình

Mã: Chọn hết

 public async Task Print(string deviceName, string text)
        {
            using (BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter)
            {
                BluetoothDevice device = (from bd in bluetoothAdapter?.BondedDevices
                                          where bd?.Name == deviceName
                                          select bd).FirstOrDefault();
                try
                {
                    using (BluetoothSocket bluetoothSocket = device?.
                        CreateRfcommSocketToServiceRecord(
                         UUID.FromString("00001101-0000-1000-8000-00805f9b34fb")))
                    {
                   
                     text = "Chuổi cần in: In tiếng việt bị lỗi \n Mong được giúp đỡ \n ";

                        bluetoothSocket?.Connect();
                        byte[] buffer = Encoding.Unicode.GetBytes(text);

                        bluetoothSocket?.OutputStream.Write(buffer, 0, buffer.Length);
                        bluetoothSocket.Close();
                     
                    }
                }
                catch (Exception exp)
                {
                    throw exp;
                }
            }
        };



Còn đây là kết quả in đầu tra bị lỗi
Hình ảnh

Nhờ các bạn xem giúp mình với, hoặc loại máy in nào khác mà in được thì giới thiệu mình với nhé.
Có hướng nào khác không xin chỉ mình với.
Mục đích cuối cùng của mình là in được cái bill có tiếng việt, xấu xinh gì ko quan trọng.
Xin cảm ơn.



Hình đại diện của người dùng
NTN
Thành viên tâm huyết
Thành viên tâm huyết
Bài viết: 482
Ngày tham gia: T.Tư 05/02/2014 3:43 pm
Đến từ: Đồng Tháp,Việt Nam
Has thanked: 19 time
Been thanked: 7 time
Liên hệ:

Re: Không in được tiếng việt khi in máy in nhiệt (Kết nối Bluetooth)

Gửi bàigửi bởi NTN » CN 14/04/2019 7:16 pm

Mình không rành code dạng này nhưng mình đã tìm hiểu. Bạn thử chuyển sang UTF8 xem thế nào?
Bạn tham khảo thử:
  1. byte[] b = new byte[2048];
  2. int k = Socket.Receive(b);    
  3. string message = Encoding.UTF8.GetString(b, 0, k);
vietdap.com - trungnhan.name.vn - Tình yêu của tôi <3

muaphonui_2010
Thành viên ưu tú
Thành viên ưu tú
Bài viết: 522
Ngày tham gia: T.Sáu 26/11/2010 1:15 pm
Đến từ: TP.HCM
Has thanked: 184 time
Been thanked: 30 time
Liên hệ:

Re: Không in được tiếng việt khi in máy in nhiệt (Kết nối Bluetooth)

Gửi bàigửi bởi muaphonui_2010 » T.Hai 15/04/2019 7:37 am

Cảm ơn bạn.
mình thử đoạn code của bạn mình pass vào thử thì nó lỗi ở dòng này bạn. int k = Socket.Receive(b); giống như nó Socket nó không có thuộc tính Receive thì phải.
Nhưng với đoạn code đầu ra là :
bluetoothSocket?.OutputStream.Write(buffer, 0, buffer.Length);
==> buffer là dạng byte,
trong khi đó đoạn "string message = Encoding.UTF8.GetString(b, 0, k);" ==> là string ==> mình nghĩ nó sẽ không nhận đâu.
---------------------
Mình sửa đoạn code này : byte[] buffer = Encoding.Unicode.GetBytes(text); thành ==> byte[] buffer = Encoding.UTF8.GetBytes(text); ==> in vẫn lỗi. mình đang đoán cái máy mình đang thử nó không hỗ trợ in tiếng việt. chắc nó chỉ hỗ trợi tiếng anh và in hình ảnh thôi.
Cảm ơn bạn.


Quay về “Visual Basic .NET và C# (VB.NET & C#)”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách