고쳐 쓰다

고쳐 쓰다

머그 프린터에 용지가 없는지 명령만 사용하여 확인하는 방법(GUI 없음)

편집: 파이썬을 사용하여 이것을 확인할 수 있습니까?

편집 2: 다른 프린터(EPSON TM-m30)로 시도해 보았습니다. 용지 없이 인쇄하려고 하면 "처리 중"에서 멈춥니다.

printer-state = processing
printer-state-message = Rendering completed
printer-state-reasons = none

하지만 여전히 논문에 대한 정보를 얻을 수 없습니다.

도움이 될지 잘 모르겠습니다. 프린터 속성을 읽는 일부 Python 코드에서 json 파일을 만들었습니다.https://pastebin.com/u97U9TnQ

고쳐 쓰다

용지 없음 센서가 있는 다른 프린터(Star Micronics TUP542)를 구입했습니다.용지 끝 센서, 하지만 센서 사용 방법에 대한 설명서를 찾을 수 없습니다(센서가 프린터에 연결되어 있음). 컵에는 몇 가지 명령이 있나요? 아니면 다른 도구를 사용해야 합니까?

Python을 사용하여 속성을 얻으려고 시도했는데 결과는 다음과 같습니다(json).https://pastebin.com/Z3Tiz5g9

그런데,프린터 상태3종이가 있든 없든 항상 . 프린터에 용지가 떨어지면 변경해야 합니까? 제 생각에는프린터 상태 이유종이가 없어진 것에 대해 말해야 하지만 항상 그런 일이 있습니다.['none']

업데이트 2

어쩌면 ESC/POS 명령을 시도해 봐야 할 것 같습니다(여기). 157페이지에서 코드를 찾았어요상태 이전.

n = 1, 49: 용지 감지기 상태 보내기

n = 1, 49하지만 그것이 문자열인지, 10진수인지, 16진수인지 무엇을 의미하는지 잘 모르겠습니다 . 1과 49 사이에 쉼표가 있는 이유는 무엇입니까?

나는 다음 Python 코드를 사용해 보았습니다.

command = [0x1D, 0x72, 1]
dest="/dev/usb/lp1"

with open(dest,"wb") as file:
    file.write(bytearray(command))

with open(dest,"rb") as file:
    data = file.read() # hangs
    print(data)

그러나 읽기 기능이 중단되고 결코 반환되지 않습니다.

[0x1D, 0x72, 49]추신: 또한 다른 값( , [0x1D, 0x72, 1, 49], ) 을 시도했지만 [0x1D, 0x72, 1, 0x49]성공하지 못했습니다.

그런데 막상 사용해보니 sudo cat /dev/usb/lp1###이 많이 인쇄되네요.

cat 다음에 hexdump를 사용하면 다음과 같은 반복 시퀀스가 ​​표시됩니다.23 06 00 00 00 00 00 00 00

답변1

본 적 있나요?매개변수 통계?

예를 들어 프린터 목록을 가져옵니다.

~$ lpstat -s

device for Canon_MX920_series: dnssd://Canon%20MX920%20series._ipp._tcp.local/?uuid=00000000-0000-1000-8000-xxxxxxxxxxxx

그런 다음 문제의 인쇄물을 쿼리합니다.

~$ lpstat -p "Canon_MX920_series"

printer Canon_MX920_series is idle.  enabled since Tue 18 Jan 2022 10:49:40 AM CST
scheduler is running

답변2

당신은 그것을 사용할 수 있습니다하위 프로세스모듈 사용법파이썬달리다매개변수 통계명령을 실행하고 출력을 구문 분석하여 프린터 상태를 확인합니다.

이를 수행하는 방법의 예는 다음과 같습니다.

import subprocess

def is_printer_out_of_paper(printer_name):
    # Run the lpstat command to get the printer's status
    output = subprocess.run(["lpstat", "-p", printer_name, "-l"], capture_output=True).stdout.decode()

    # Check if the output contains the "out of paper" message
    return "out of paper" in output

# Example usage
if is_printer_out_of_paper("My Printer"):
    print("Printer is out of paper")
else:
    print("Printer has paper")

이 예에서는내 프린터프린터의 이름입니다.매개변수 통계명령은 프린터의 상태를 가져오는 데 사용됩니다. 이것-피옵션은 프린터 이름을 지정하고-엘옵션을 사용하면 lpstat 명령이 프린터 상태를 긴 형식으로 나열합니다. lpstat 명령의 출력은 다음 명령을 사용하여 캡처되었습니다.캡처 출력 옵션그런 다음 다음을 사용하여 문자열로 디코딩합니다.stdout.디코드()방법. 그런 다음 해당 문자열 내에서 검색하십시오."용지 없음" 메시지프린터에 용지가 없는지 확인합니다.

관련 정보