using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestApp { public class Startup { static void Main(string[] args) { if (CasioPrizmDevice.IsDetected) { //Connect to the calculator Console.WriteLine("Calculator detected, connecting..."); var device = CasioPrizmDevice.GetDevice(); device.ScreenDataReceived += _WriteImageFile; device.Connect(); //Start the screen receiver service, or something device.StartScreenReceiverService(); Console.WriteLine("Screen Receiver service started."); //Wait for a key to be pressed while (true) { if (Console.KeyAvailable) if (Console.ReadKey().Key == ConsoleKey.Escape) break; } //Stop the screen receiver service, or something device.StopScreenReceiverService(); Console.WriteLine("Screen Receiver service stopped."); //Disconnect from the calculator Console.WriteLine("Disconnecting from calculator..."); device.Disconnect(); device.ScreenDataReceived -= _WriteImageFile; device.Dispose(); device = null; } else Console.WriteLine("Calculator not detected."); } //This whole function needs major help. private static void _WriteImageFile(object sender, ScreenDataReceivedEventArgs e) { string fileName = "C:\\ImageData\\img_{0}.png"; var bmp = new System.Drawing.Bitmap(384, 216); switch (e.Type) { case CasioPrizmDevice.ImageType.Word: { for (int i = 0; i < 216; i++) { for (int j = 0; j < 384; j++) { int offset = (384 * i) + j; ushort c = (ushort)(((e.ScreenData[offset * 2] << 8) | (e.ScreenData[(offset * 2) + 1])) & 0xFFFF); var color = System.Drawing.Color.FromArgb(c >> 11, (c >> 5) & 0x3F, c & 0x1F); bmp.SetPixel(j, i, color); } } break; } case CasioPrizmDevice.ImageType.Nibble: { for (int i = 216 - 1; i >= 0; i--) { for (int j = 384 - 1; j >= 0; j--) { int offset = ((384 * i) + j) / 2; int c; if (offset % 2 == 0) c = e.ScreenData[offset] & 0x0F; else c = e.ScreenData[offset] >> 4; var color = System.Drawing.Color.FromArgb((c & 0x8) > 0 ? 0xFF : 0, (c & 0x4) > 0 ? 0xFF : 0, (c & 0x2) > 0 ? 0xFF : 0); bmp.SetPixel(j, i, color); } } break; } default: { //Uh? break; } } int counter = 0; while (System.IO.File.Exists(String.Format(fileName, counter))) counter++; bmp.Save(String.Format(fileName, counter)); } } }