public void Send(ChuniIoMessage message) { int sz = Marshal.SizeOf(message); Marshal.StructureToPtr(message, _sendBufferUnmanaged, false); Marshal.Copy(_sendBufferUnmanaged, _sendBuffer, 0, sz); _client.BeginSend(_sendBuffer, sz, SendCallback, null); }
private void DoService(object sender, RoutedEventArgs e) { ChuniIoMessage msg = new ChuniIoMessage(); msg.Source = (byte)ChuniMessageSources.Controller; msg.Type = (byte)ChuniMessageTypes.CabinetService; cio.Send(msg); }
private void DoCoin(object sender, RoutedEventArgs e) { ChuniIoMessage msg = new ChuniIoMessage(); msg.Source = (byte)ChuniMessageSources.Controller; msg.Type = (byte)ChuniMessageTypes.CoinInsert; cio.Send(msg); }
private void handleRecv(ChuniIoMessage message) { if (message.Source != (byte)ChuniMessageSources.Game || message.Type != (byte)ChuniMessageTypes.LedSet || message.Target >= 16) { return; } touchpads[message.Target].LedStrip.Dispatcher.BeginInvoke( (Action)(() => touchpads[15 - message.Target].LedStrip.Fill = new SolidColorBrush(Color.FromRgb(message.LedColorRed, message.LedColorGreen, message.LedColorBlue)))); }
private static void RecvThread(object c) { ChuniIoMessage message = new ChuniIoMessage(); int sz = Marshal.SizeOf(message); IPEndPoint endpoint = new IPEndPoint(IPAddress.Any, 0); IntPtr recvBufferPtr; recvBufferPtr = Marshal.AllocHGlobal(32); RecvContext context = (RecvContext)c; try { while (true) { byte[] recvBuffer = context.client.Receive(ref endpoint); if (recvBuffer.Length == 0) { break; } if (recvBuffer.Length != sz) { continue; } Marshal.Copy(recvBuffer, 0, recvBufferPtr, sz); message = (ChuniIoMessage)Marshal.PtrToStructure(recvBufferPtr, message.GetType()); context.callback(message); } } catch { // noting, just exit. } Marshal.FreeHGlobal(recvBufferPtr); }
public TouchPad() { InitializeComponent(); message = new ChuniIoMessage(); message.Source = (byte)ChuniMessageSources.Controller; }