ability to send to stdout only
This commit is contained in:
parent
175899a539
commit
5cd582b2e4
17
src/main.zig
17
src/main.zig
|
@ -42,7 +42,7 @@ pub fn main() !void {
|
||||||
const prefix = "/dev/ttyUSB";
|
const prefix = "/dev/ttyUSB";
|
||||||
const device = try alloc.dupeZ(u8, args[1]);
|
const device = try alloc.dupeZ(u8, args[1]);
|
||||||
defer alloc.free(device);
|
defer alloc.free(device);
|
||||||
if (!std.mem.startsWith(u8, device, prefix)) try usage(args);
|
if (!std.mem.eql(u8, device, "-") and !std.mem.startsWith(u8, device, prefix)) try usage(args);
|
||||||
|
|
||||||
// stdout is for the actual output of your application, for example if you
|
// stdout is for the actual output of your application, for example if you
|
||||||
// are implementing gzip, then only the compressed bytes should be sent to
|
// are implementing gzip, then only the compressed bytes should be sent to
|
||||||
|
@ -69,7 +69,7 @@ pub fn main() !void {
|
||||||
filename = args[i]; // arg capture changes value...
|
filename = args[i]; // arg capture changes value...
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (arg[0] == '-' and areDigits(arg[1..])) {
|
if ((arg[0] == '-' and arg.len > 1) and areDigits(arg[1..])) {
|
||||||
line_number = try std.fmt.parseInt(usize, arg[1..], 10);
|
line_number = try std.fmt.parseInt(usize, arg[1..], 10);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -116,6 +116,9 @@ fn areDigits(bytes: []u8) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sendPixels(pixels: []const u8, file: [:0]const u8, device_id: u8) !void {
|
fn sendPixels(pixels: []const u8, file: [:0]const u8, device_id: u8) !void {
|
||||||
|
if (std.mem.eql(u8, file, "-"))
|
||||||
|
return sendPixelsToStdOut(pixels);
|
||||||
|
|
||||||
if (@import("builtin").os.tag != .linux)
|
if (@import("builtin").os.tag != .linux)
|
||||||
@compileError("Linux only please!");
|
@compileError("Linux only please!");
|
||||||
|
|
||||||
|
@ -127,6 +130,16 @@ fn sendPixels(pixels: []const u8, file: [:0]const u8, device_id: u8) !void {
|
||||||
return error.LinuxNativeNotImplemented;
|
return error.LinuxNativeNotImplemented;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn sendPixelsToStdOut(pixels: []const u8) !void {
|
||||||
|
const stdout_file = std.io.getStdOut().writer();
|
||||||
|
var bw = std.io.bufferedWriter(stdout_file);
|
||||||
|
const stdout = bw.writer();
|
||||||
|
defer bw.flush() catch unreachable; // don't forget to flush!
|
||||||
|
for (0..HEIGHT) |i| {
|
||||||
|
try stdout.print("{d:0>2}: {s}\n", .{ i, fmtSliceGreyscaleImage(pixels[(i * WIDTH)..((i + 1) * WIDTH)]) });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn sendPixelsThroughI2CDriver(pixels: []const u8, file: [*:0]const u8, device_id: u8) !void {
|
fn sendPixelsThroughI2CDriver(pixels: []const u8, file: [*:0]const u8, device_id: u8) !void {
|
||||||
var pixels_write_command = [_]u8{0x00} ** ((WIDTH * PAGES) + 1);
|
var pixels_write_command = [_]u8{0x00} ** ((WIDTH * PAGES) + 1);
|
||||||
pixels_write_command[0] = 0x40;
|
pixels_write_command[0] = 0x40;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user