コード例 #1
0
         public async Task DispatchAsync(WebSocketManager manager) {
 
             WebSocket socket = await manager.AcceptWebSocketAsync();
             SafeSocket commonSocket = new SafeSocket(socket);
             Task[] senderTasks = new Task[this.senders.Count];
             for (int senderIndex = 0; senderIndex < senderTasks.Length; senderIndex++) {
                 int index = senderIndex;// careful at index ! , make copy and use it inside closure !
                 senderTasks[senderIndex] = Task.Run(async () => {
                     await commonSocket.ReadAsync();
                 });
             }
         }
コード例 #2
0
        public async Task SendCommand(string data)
        {
            var cmd = CRCHelper.StringToByteArray(data.Replace(" ", ""));

            var str = BitConverter.ToString(cmd, 0, cmd.Length).Replace("-", " ");

            _logger.LogInformation("SendCmd : " + str);
            using (var socket = SafeSocket.ConnectSocket(remoteEP))
            {
                await SendAsync(socket, cmd, 0, cmd.Length, 0).ConfigureAwait(false);

                var response = await ReceiveAsync(socket);

                if (_curtainHelper != null)
                {
                    await _curtainHelper.OnReceiveData(response);
                }
            }
        }
コード例 #3
0
        public async Task <string> SendCommand(string data, bool log = true)
        {
            try
            {
                var cmd    = StringToByteArray(data.Replace(" ", ""));
                var cmdCRC = CRCHelper.get_CRC16_C(cmd);
                var cmd1   = new byte[cmd.Length + 2];
                cmd.CopyTo(cmd1, 0);
                cmdCRC.CopyTo(cmd1, cmd.Length);
                var str = CRCHelper.byteToHexStr(cmd1, cmd1.Length);
                if (log)
                {
                    _logger.Info("SendCmd : " + str);
                }
                using (var socket = SafeSocket.ConnectSocket(remoteEP))
                {
                    var ret = await SendAsync(socket, cmd1, 0, cmd1.Length, 0).ConfigureAwait(false);

                    var response = await ReceiveAsync(socket);

                    if (log)
                    {
                        _logger.Info("Cmd Receive : " + response);
                    }
                    if (_helper != null)
                    {
                        await _helper.OnReceiveCommand(response);
                    }
                    return(response);
                }
            }
            catch (Exception ex)
            {
                _logger.Info("err data:" + data);
                _logger.Error(ex.ToString());
                return(string.Empty);
            }
        }
コード例 #4
0
ファイル: HvacListener.cs プロジェクト: iwaitu/tcpwebgateway
        public async Task SendCommand(string data, bool debug = false)
        {
            try
            {
                var cmd    = StringToByteArray(data.Replace(" ", ""));
                var cmdCRC = CRCHelper.Checksum(cmd);
                var cmd1   = new byte[cmd.Length + 1];
                cmd.CopyTo(cmd1, 0);
                cmd1[cmd.Length] = (byte)cmdCRC;
                var str = BitConverter.ToString(cmd1, 0, cmd1.Length).Replace("-", " ");
                if (debug)
                {
                    _logger.LogInformation("SendCmd : " + str);
                }
                using (var s = SafeSocket.ConnectSocket(remoteEP))
                {
                    var ret = await SendAsync(s, cmd1, 0, cmd1.Length, 0).ConfigureAwait(false);

                    var response = await ReceiveAsync(s);

                    if (debug)
                    {
                        _logger.LogInformation("Receive : " + response);
                    }

                    if (!string.IsNullOrWhiteSpace(response) && !string.IsNullOrEmpty(response))
                    {
                        await _helper.OnReceiveData(response);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError("err data: " + data);
                _logger.LogError(ex.ToString());
            }
        }