test send image code

This commit is contained in:
Gil Zhang
2023-12-17 17:05:28 +08:00
committed by gil zhang
parent e44212d39d
commit 2c359eecb7
3 changed files with 61 additions and 46 deletions
+24 -20
View File
@@ -7,31 +7,35 @@ using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using UsbComm;
byte[] byteArray = new byte[128*296*8];
byte[] byteArray = new byte[128 * 36 / 8] { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcf, 0xff, 0x81, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xfe, 0x0, 0x7f, 0xff, 0x80, 0x1f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf, 0xfc, 0x0, 0x3f, 0xff, 0x0, 0xf, 0xff, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf, 0xf8, 0x7c, 0x3f, 0xfe, 0xf, 0xf, 0xff, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf, 0xf0, 0xfe, 0x1f, 0xfe, 0x3f, 0x87, 0xff, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf, 0xf1, 0xff, 0x1f, 0xfe, 0x3f, 0xc7, 0xfe, 0x7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe1, 0x8f, 0xf1, 0xff, 0xfe, 0x3c, 0x7f, 0xc3, 0xfc, 0x47, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x8f, 0xe3, 0xff, 0xfe, 0x3c, 0x7f, 0xe3, 0xf8, 0x47, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe3, 0x81, 0xfe, 0x3c, 0x7f, 0xe3, 0xf8, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe2, 0x0, 0xff, 0xfc, 0x7f, 0xe3, 0xf1, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe0, 0x0, 0x7f, 0xfc, 0x7f, 0xe3, 0xe3, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe0, 0x7c, 0x3f, 0xfc, 0x7f, 0xe3, 0xe3, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe1, 0xfe, 0x1f, 0xfc, 0x7f, 0xe3, 0xc7, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe3, 0xff, 0x1f, 0xfc, 0x7f, 0xe3, 0x8f, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe3, 0xff, 0x1f, 0xfc, 0x7f, 0xe3, 0x1f, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe3, 0xff, 0x1f, 0xfc, 0x7f, 0xe3, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xe3, 0xff, 0x1f, 0xfc, 0x7f, 0xe3, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xf1, 0xff, 0x1f, 0xfe, 0x3f, 0xc7, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xf1, 0xfe, 0x3f, 0xfe, 0x3f, 0xc7, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xf8, 0x7c, 0x3f, 0xfe, 0xf, 0x7, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xf8, 0x0, 0x7e, 0x3f, 0x0, 0xf, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xfc, 0x0, 0xfe, 0x3f, 0x80, 0x1f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0x3, 0xfe, 0x3f, 0xe0, 0x7f, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
using (var image = Image.Load<Rgba32>("default.jpg"))
{
// 应用灰度和二值化处理
image.Mutate(x => x.Grayscale().BinaryThreshold(0.5f));
//using (var image = Image.Load<Rgba32>("default.jpg"))
//{
// // 应用灰度和二值化处理
// image.Mutate(x => x.Grayscale().BinaryThreshold(0.5f));
// 保存处理后的图片
image.Save("output.jpg");
// 将处理后的图片转换为字节数组
//using (MemoryStream ms = new MemoryStream())
//{
// image.Save(ms, new JpegEncoder());
// byteArray = ms.ToArray();
//}
// // 保存处理后的图片
// image.Save("output.jpg");
// // 将处理后的图片转换为字节数组
// //using (MemoryStream ms = new MemoryStream())
// //{
// // image.Save(ms, new JpegEncoder());
// // byteArray = ms.ToArray();
// //}
image.CopyPixelDataTo(byteArray);
}
// image.CopyPixelDataTo(byteArray);
//}
var hidDevice = new Hw75DynamicDevice();
var data = hidDevice.SetEInkImage(byteArray, 0, 0, 128, 296, false);
hidDevice.Open();
var data111 = hidDevice.SetEInkImage(byteArray, 0, 0, 128, 36, false);
var data = hidDevice.GetVersion();
//var data11 = hidDevice.GetMotorState();
Console.ReadKey();
/*
var device = new Device("\\\\?\\hid#vid_1d50&pid_615e&mi_01#8&a8a6dc9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}"); //Fill vendor id and product id
Console.WriteLine(device.GetManufacturer());
@@ -66,7 +70,7 @@ var read = device.Read(64);
var result = read[3..(read[2] + 3)];
var data = MessageD2H.Parser.ParseFrom(result);
Console.WriteLine(data);
*/
//var data = MessageD2H.Parser.ParseFrom(result);
//Console.WriteLine(data);
//Hid.Exit(); //Call at the end of your program
@@ -9,10 +9,16 @@ public static class AssembleDataExtension
{
var msgBytes = messageH2D.ToByteArray();
var list = new List<byte> { (byte)msgBytes.Length };
using (MemoryStream ms = new MemoryStream())
{
CodedOutputStream output = new CodedOutputStream(ms);
output.WriteInt32(msgBytes.Length);
output.Flush();
byte[] byteList = ms.ToArray();
list.AddRange(msgBytes);
return list.ToArray();
var result = byteList.Concat(msgBytes).ToArray();
return result;
}
}
}
+27 -22
View File
@@ -11,12 +11,12 @@ public class Hw75DynamicDevice : IHw75DynamicDevice
{
private const string Path = "\\\\?\\hid#vid_1d50&pid_615e&mi_01#8&a8a6dc9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}";
private const int RePortCount = 63;
private const int RePortCount = 63;
private const int PayloadSize = RePortCount - 1;
private Device? _device = null;
private Device? _device = null;
public DeviceInfo Open()
{
var info = new DeviceInfo();
@@ -31,7 +31,7 @@ public class Hw75DynamicDevice : IHw75DynamicDevice
}
catch (Exception)
{
}
return info;
@@ -51,7 +51,7 @@ public class Hw75DynamicDevice : IHw75DynamicDevice
Action = Action.Version
};
var data = Call(version);
return data.Version;
}
@@ -62,7 +62,7 @@ public class Hw75DynamicDevice : IHw75DynamicDevice
Action = Action.MotorGetState
};
var data = Call(motorGetState);
return data.MotorState;
}
@@ -73,7 +73,7 @@ public class Hw75DynamicDevice : IHw75DynamicDevice
Action = Action.EinkSetImage,
EinkImage = new EinkImage()
{
Id = (uint)new Random().Next()*1000000,
Id = (uint)397105,
Bits = ByteString.CopyFrom(imageData),
Partial = partial,
}
@@ -100,34 +100,39 @@ public class Hw75DynamicDevice : IHw75DynamicDevice
}
var bytes = h2d.EnCodeProtoMessage();
for (int i = 0; i < bytes.Length; i+=PayloadSize)
for (int i = 0; i < bytes.Length; i += PayloadSize)
{
var buf = bytes[i..(i+PayloadSize)];
var buf = new byte[PayloadSize];
var list =new List<byte>
if (i + PayloadSize > bytes.Length)
{
1,
(byte)buf.Length
};
list.AddRange(buf);
_device.Write(list.ToArray());
buf = bytes[i..];
}
else
{
buf = bytes[i..(i + PayloadSize)];
}
var list = new byte[2] { 1, (byte)buf.Length };
var result = list.Concat(buf).ToArray();
_device.Write(result);
}
Task.Delay(20);
var byteList = new List<byte>();
while (true)
{
var read = _device.Read(RePortCount+1);
var read = _device.Read(RePortCount + 1);
int cnt = read[1];
byteList.AddRange(read[2..cnt]);
byteList.AddRange(read[3..(cnt + 2)]);
if (cnt < PayloadSize)
{
break;
}
}
return MessageD2H.Parser.ParseFrom(byteList.ToArray());
}
}