|
|
4 年之前 | |
|---|---|---|
| docs | 4 年之前 | |
| src | 4 年之前 | |
| README.md | 4 年之前 | |
| go.mod | 4 年之前 | |
| go.sum | 4 年之前 |
_Brother MFC-7820N already has a scanner driver you can download here_ but that are prebuilt binary (x86/x64) and source code isn't public. This is a problem if you want to use the scanner on ARM architecture, because if you don't have the source code of the driver you can't recompile it. Anyway this should work on every scanner that use brscan2, but I'm not sure.
When we open a connection with the scanner on port 54921, it respond with his status code:
+OK 200: Ready to use-NG 401: Scanner is busyNow we can send a request that specify resolution and color mode, then scanner send to client a offer based on request. I called this part `lease because it recalled me DHCP lease
request := []byte(fmt.Sprintf("\x1bI\nR=%d,%d\nM=%s\n\x80", resolution, resolution, mode))
sendPacket(socket, request)
300,300,2,209,2480,294,3472
response[2] : ADF statusresponse[0] response[1]: Image DPIresponse[3] response[5]: Plane dimensions in mmresponse[4] response[6]: Image resolution in pxNow we are ready to send start scan request:
width = mmToPixels(planeWidth, dpiX)
height = mmToPixels(planeHeight, dpiY)
requestFormat := "\x1bX\nR=%v,%v\nM=%s\nC=%s\nJ=MID\nB=50\nN=50\nA=0,0,%d,%d\n\x80"
request = []byte(fmt.Sprintf(requestFormat, dpiX, dpiY, mode, compression, width, height))
X_DPI, Y_DPICGRAY, GRAY64, TEXTJPEG or RLENGTH or NONE JPEG/RLENGTH UNTESTEDWIDTH, HEIGHTgit clone https://github.com/corsmith/mfc-7820n.git
go build -o mfc-7820n mfc-7820n/src/*.go
./mfc-7820n --help
Output:
Usage of ./mfc-7820n:
-a string
IP address of the Brother scanner (default "192.168.0.157")
-c string
Color mode of the scan (CGRAY, GRAY64, TEXT) (default "CGRAY")
-m Enable scan of all pages from feeder
-n string
Name of the output file (default "scan.tiff")
-r int
Resolution of the scan (default 300)
-i string
Name of the raw input file to parse instead of connecting to the printer
Partially thanks to this