123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Net.Sockets;
- using System.Threading;
- using Google.Protobuf;
- using chutian_parking_terminal.communication_base;
- using chutian_parking_terminal.data_buffer;
- using chutian_parking_terminal.motion_executer;
- using Newtonsoft.Json.Linq;
- using tool;
- using System.Windows.Forms;
- using chutian_parking_terminal.front_terminal_manager;
- using Newtonsoft.Json;
- namespace chutian_parking_terminal.communication
- {
- public class Singlechip_communication : Communication_socket_tcp_base
- {
- //由于C#不能多继承 就只能直接写成单例模式了
- /// <summary>
- /// 单例
- /// </summary>
- class Nested
- {
- // 创建模板类实例,参数2设为true表示支持私有构造函数
- internal static readonly Singlechip_communication instance = Activator.CreateInstance(typeof(Singlechip_communication), true) as Singlechip_communication;
- }
- private static Singlechip_communication instance = null;
- public static Singlechip_communication Instance
- {
- get
- {
- return Nested.instance;
- }
- }
-
- public int m_stop_singlechip_index;
- private Singlechip_communication()
- {
- }
- /// <summary>
- /// 初始化单片机通信,停车单片机默认最后一个连接
- /// </summary>
- public void singlechip_communication_init()
- {
- JArray t_ip_array = json_file_operation.Instance.read_json_jarray("pickup_singleChipAddress");
- JArray t_port_array = json_file_operation.Instance.read_json_jarray("pickup_singleChipPort");
- t_ip_array.Add(json_file_operation.Instance.read_json_string("singleChipAddress"));
- t_port_array.Add(json_file_operation.Instance.read_json_string("singleChipPort"));
- m_stop_singlechip_index = t_ip_array.Count-1;
- base.communication_socket_tcp_init(t_ip_array, t_port_array);
- }
- public void singlechip_communication_connect()
- {
- base.communication_socket_tcp_connect();
- }
- public void singlechip_communication_uninit()
- {
- base.communication_socket_tcp_uninit();
- }
- /// <summary>
- /// 检查入口状态
- /// </summary>
- /// <returns></returns>
- public bool check_entrance_statu()
- {
- if (m_communication_status[m_stop_singlechip_index] != Communication_socket_tcp_statu.COMMUNICATION_TCP_READY)
- {
- return false;
- }
- return true;
- }
- /// <summary>
- /// 检查出口状态
- /// </summary>
- /// <returns></returns>
- public bool check_exit_statu()
- {
- return true;
- for (int index = 0; index < base.m_connect_count-1; ++index)
- {
- if (m_communication_status[index] != Communication_socket_tcp_statu.COMMUNICATION_TCP_READY)
- {
- return false;
- }
- }
- return true;
- }
- //重载处理消息
- public override void execute_msg(int index,string msg)
- {
- if (msg.Contains("InPutDi"))
- {
- Console.WriteLine("单片机的消息:"+msg + " size:" + msg.Length+"\n");
- SingleChip.initial_singlechip_msg initial_Singlechip_Msg = SingleChip.initial_singlechip_msg.Parser.ParseJson(msg);
-
- //Console.WriteLine("单片机的消息解析后:" + initial_Singlechip_Msg.ToString() + " size:" + msg.Length + "\n");
- if (initial_Singlechip_Msg.DispatchDirection == 1)
- {
- Front_terminal_manager.Instance.get_singlechip_data_bufferr().set_entrance_singlechip_msg(initial_Singlechip_Msg);
- }
- else if (initial_Singlechip_Msg.DispatchDirection == 2)
- {
- Front_terminal_manager.Instance.get_singlechip_data_bufferr().set_exit_singlechip_msg(index, initial_Singlechip_Msg);
- }
- }
-
- }
- //重载封装消息
- public override void encapsulate_msg(int index,string message)
- {
- base.encapsulate_msg(index, message);
- }
- //重载定时封装
- public override void encapsulate_send_data()
- {
- //Console.WriteLine("终端发送给单片机的"+ Front_terminal_manager.Instance.get_singlechip_data_bufferr().get_entrance_terminal_msg().ToString() + " size:"+ Front_terminal_manager.Instance.get_singlechip_data_bufferr().get_entrance_terminal_msg().ToString().Length + "\n");
- //encapsulate_msg(m_stop_singlechip_index, Front_terminal_manager.Instance.get_singlechip_data_bufferr().get_entrance_terminal_msg().ToString());
- //for (int i = 0; i < this.m_connect_count; ++i)
- //{
- // if ( i!= m_stop_singlechip_index )
- // {
- // string exit_terminal_msg = new JsonFormatter(JsonFormatter.Settings.Default).Format(Front_terminal_manager.Instance.get_singlechip_data_bufferr().get_exit_terminal_msg(i));
- // encapsulate_msg(i, exit_terminal_msg);
- // }
- //}
- }
- }
- }
|