荔枝大娘

.Net Core 3.1 调用 linux usb指令打印(ubuntu20.04)

电脑版发表于:2021/1/11 10:00

    usb 指令打印 使用 kernel32.dll 进行输入打印的时候 会发现 在Windows上支持很好 但是linux 就会有有各种问题 

所以 在 linux上 不推荐 使用 一些 Windows api 打包 成 so文件 也感觉有不对劲的地方



  1. 插入打印机 ubuntu会识别出来usb打印机

    在/dev/usb/ 路径下 会有 lp开头的文件 把需要打印的 字节数据 写入 对应的 lp文件 即可打印出数据


  2. 假设我 插入的u口 是 lp0 我需要直接在 ubuntu 终端输出打印 

 echo "printstr" >/dev/usb/lp0


    使用.Net Core 程序 进行打印  获取 dev/usb 下所有lp 开头的 文件 做一个 下拉选择框 

                List<string> list = new List<string>();
                string path = "/dev/usb";
                DirectoryInfo di = new DirectoryInfo(path);
                //找到该目录下的文件 
                FileInfo[] fis = di.GetFiles();
                foreach (FileInfo fi in fis)
                {
                    if (fi.Name.Contains("lp"))
                        list.Add(fi.Name);
                }
                return list;

打印:将准备好的byte[] 写入 /dev/usb/lp?  就可以完成打印

 public static bool WriteFileNew(byte[] lpBuffer)
        {
            string path = "/dev/usb/lp0";
            IocManager._log.LoggerView("path:" + path);
            using (FileStream fileStream = new FileStream(path, FileMode.Open))
            { 
                fileStream.Write(lpBuffer, 0, lpBuffer.Length);
            }
            

            return true;
        }

注:/dev/usb 文件 只有 root 才能进行访问写入 dotnet run 的时候 需要 su root

关于TNBLOG
TNBLOG,技术分享
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢