using AxPPVSGUARDLib;
using DevExpress.XtraEditors;
using HL_FristAidPlatform_DTO;
using HL_FristAidPlatform_Public;
using Newtonsoft.Json;
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Net;
using System.Net.Sockets;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace HL_FristAidPlatform_RealTimeVideo
{
public partial class Form_RealTimeVideo : XtraForm
{
#region 变量
///
/// 当前患者编号(GUID)
///
private string Cur_PatientGuid = string.Empty;
///
/// 当前患者信息
///
private DataTable Cur_PatientDT = null;
///
/// 通道1
///
private AxPpvsguard axPpvsguard1 = new AxPpvsguard();
///
/// 通道2
///
private AxPpvsguard axPpvsguard2 = new AxPpvsguard();
///
/// 通道3
///
private AxPpvsguard axPpvsguard3 = new AxPpvsguard();
///
/// 通道4
///
private AxPpvsguard axPpvsguard4 = new AxPpvsguard();
#region 急救地图需要
private WebMap webMap = WebMap.Instance;
private int LpGPS;
///
/// 急救车牌号
///
private string Cur_PlateNumber = "";
///
/// 设备ID
///
private string Cur_DeviceId = "";
///
/// 速度
///
private string _speed;
public string Speed
{
get
{
return _speed;
}
set
{
_speed = value;
}
}
///
/// 经度
///
private string _longitude;
public string Longitude
{
get
{
return _longitude;
}
set
{
_longitude = value;
}
}
///
/// 纬度
///
private string _latitude;
public string Latitude
{
get
{
return _latitude;
}
set
{
_latitude = value;
}
}
///
/// 时间
///
private string _time;
public string Time
{
get
{
return _time;
}
set
{
_time = value;
}
}
#endregion
#endregion
///
/// 实时视频监控
///
/// GUID
public Form_RealTimeVideo(string _patientGuid)
{
InitializeComponent();
Cur_PatientGuid = _patientGuid;
}
///
/// 窗体加载
///
///
///
private void Form_RealTimeVideo_Load(object sender, EventArgs e)
{
BindData();
}
///
/// 绑定数据
///
private void BindData()
{
try
{
#region 绑定数据
Cur_PatientDT = DBHelpClass.GetDataRow("api/service/T_Service_Patient/" + Cur_PatientGuid + "");
if (Cur_PatientDT != null && Cur_PatientDT.Rows.Count > 0)
{
string ambulanceGuid = Cur_PatientDT.Rows[0]["AmbulanceGuid"].ToString();
string url = string.Format("api/base/T_Base_Ambulance/GetServerInfoByGuid?guid={0}&serverType=1,2", ambulanceGuid);
DataTable ServerDT = DBHelpClass.GetJsonText(url);
if (ServerDT != null && ServerDT.Rows.Count > 0)
{
//车牌号
string PlateNumber = ServerDT.Rows[0]["PlateNumber"].ToString().Trim();
label_PlateNumber.Text = PlateNumber == "" ? "" : "当前车辆牌照:" + PlateNumber;
//云平台地址即IP地址
string ServerIP = ServerDT.Rows[0]["ServerIP"].ToString();
//监控平台用户名
string name = ServerDT.Rows[0]["UserName"].ToString();
//监控平台用户密码
string passWord = ServerDT.Rows[0]["Password"].ToString();
//设备ID
string deviceId = ServerDT.Rows[0]["EquipmentCode"].ToString();
//车载设备 通信端口
int serverPortNumber = int.Parse(ServerDT.Rows[0]["CommunicationPort"].ToString());
//单兵设备 通信端口
int streamPortNumber = int.Parse(ServerDT.Rows[1]["CommunicationPort"].ToString());
#region 通道1
int channel = 1;
axPpvsguard1.BeginInit();
ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof(Form_RealTimeVideo));
axPpvsguard1.Dock = DockStyle.Fill;
axPpvsguard1.Enabled = true;
axPpvsguard1.Location = new Point(0, 0);
axPpvsguard1.Name = "axPpvsguard1";
axPpvsguard1.OcxState = (AxHost.State)componentResourceManager.GetObject("axPpvsguard1.OcxState");
axPpvsguard1.Size = new Size(1046, 650);
axPpvsguard1.TabIndex = 1;
AutoScaleDimensions = new SizeF(6f, 12f);
AutoScaleMode = AutoScaleMode.Inherit;
ClientSize = new Size(1046, 650);
tableLayoutPanel_1.Controls.Add(axPpvsguard1);
//全屏
axPpvsguard1.MaxWindow += AxPpvsguard_MaxWindow;
//Name = "通道01";
//Text = "视频";
axPpvsguard1.EndInit();
axPpvsguard1.ConnectDeviceByACS(deviceId, ServerIP, serverPortNumber, name, passWord);
axPpvsguard1.SetActiveXShowMode(0, 1);
axPpvsguard1.SetDeviceNetLine(1);
axPpvsguard1.StreamPlayStartByTCP(ServerIP, streamPortNumber, deviceId, channel, 1, 1);
#endregion
#region 通道2
int channel2 = 2;
axPpvsguard2.BeginInit();
ComponentResourceManager componentResourceManager1 = new ComponentResourceManager(typeof(Form_RealTimeVideo));
axPpvsguard2.Dock = DockStyle.Fill;
axPpvsguard2.Enabled = true;
axPpvsguard2.Location = new Point(0, 0);
axPpvsguard2.Name = "axPpvsguard2";
axPpvsguard2.OcxState = (AxHost.State)componentResourceManager1.GetObject("axPpvsguard2.OcxState");
axPpvsguard2.Size = new Size(1046, 650);
axPpvsguard2.TabIndex = 2;
AutoScaleDimensions = new SizeF(6f, 12f);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1046, 650);
tableLayoutPanel_1.Controls.Add(axPpvsguard2);
//全屏
axPpvsguard2.MaxWindow += AxPpvsguard_MaxWindow;
//Name = "通道02";
//Text = "视频";
axPpvsguard2.EndInit();
axPpvsguard2.ConnectDeviceByACS(deviceId, ServerIP, serverPortNumber, name, passWord);
axPpvsguard2.SetActiveXShowMode(0, 1);
axPpvsguard2.SetDeviceNetLine(1);
axPpvsguard2.StreamPlayStartByTCP(ServerIP, streamPortNumber, deviceId, channel2, 1, 1);
#endregion
#region 通道3
Bind_RTLS();
//int channel3 = 3;
//axPpvsguard3.BeginInit();
//ComponentResourceManager componentResourceManager3 = new ComponentResourceManager(typeof(Form_RealTimeVideo));
//axPpvsguard3.Dock = DockStyle.Fill;
//axPpvsguard3.Enabled = true;
//axPpvsguard3.Location = new Point(0, 0);
//axPpvsguard3.Name = "axPpvsguard3";
//axPpvsguard3.OcxState = (AxHost.State)componentResourceManager3.GetObject("axPpvsguard3.OcxState");
//axPpvsguard3.Size = new Size(1046, 650);
//axPpvsguard3.TabIndex = 3;
//AutoScaleDimensions = new SizeF(6f, 12f);
//AutoScaleMode = AutoScaleMode.Font;
//ClientSize = new Size(1046, 650);
//tableLayoutPanel_1.Controls.Add(axPpvsguard3);
////全屏
//axPpvsguard3.MaxWindow += AxPpvsguard_MaxWindow;
////Name = "通道03";
////Text = "视频";
//axPpvsguard3.EndInit();
//axPpvsguard3.ConnectDeviceByACS(deviceId, ServerIP, serverPortNumber, name, passWord);
//axPpvsguard3.SetActiveXShowMode(0, 1);
//axPpvsguard3.SetDeviceNetLine(1);
//axPpvsguard3.StreamPlayStartByTCP(ServerIP, streamPortNumber, deviceId, channel3, 1, 1);
#endregion
#region 通道4
BindECG(axPpvsguard1.Width, axPpvsguard1.Height);
//int channel4 = 4;
//axPpvsguard4.BeginInit();
//ComponentResourceManager componentResourceManager4 = new ComponentResourceManager(typeof(Form_RealTimeVideo));
//axPpvsguard4.Dock = DockStyle.Fill;
//axPpvsguard4.Enabled = true;
//axPpvsguard4.Location = new Point(0, 0);
//axPpvsguard4.Name = "channel4";
//axPpvsguard4.OcxState = (AxHost.State)componentResourceManager4.GetObject("channel4.OcxState");
//axPpvsguard4.Size = new Size(1046, 650);
//axPpvsguard4.TabIndex = 4;
//AutoScaleDimensions = new SizeF(6f, 12f);
//AutoScaleMode = AutoScaleMode.Font;
//ClientSize = new Size(1046, 650);
//tableLayoutPanel_1.Controls.Add(axPpvsguard4);
////全屏
//axPpvsguard4.MaxWindow += AxPpvsguard_MaxWindow;
////Name = "MyIVMS";
////Text = "MyIVMS";
//axPpvsguard4.EndInit();
//axPpvsguard4.ConnectDeviceByACS(deviceId, ServerIP, serverPortNumber, name, passWord);
//axPpvsguard4.SetActiveXShowMode(0, 1);
//axPpvsguard4.SetDeviceNetLine(1);
//axPpvsguard4.StreamPlayStartByTCP(ServerIP, streamPortNumber, deviceId, channel4, 1, 1);
#endregion
}
else
{
XtraMessageBox.Show("当前病人没有绑定急救车!无法查看实时视频!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
this.Close();
}
}
#endregion
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定数据:\r\n" + ex);
}
}
///
/// 全屏
///
///
///
private void AxPpvsguard_MaxWindow(object sender, EventArgs e)
{
try
{
//已经全屏
if (panelControl_Show.Visible)
{
//取消全屏
panelControl_Show.Visible = false;
panelControl_Show.Controls.Clear();
//加载四宫格
panel_Control.Controls.Add(tableLayoutPanel_1);
tableLayoutPanel_1.Visible = true;
tableLayoutPanel_1.Controls.Add(axPpvsguard1);
tableLayoutPanel_1.Controls.Add(axPpvsguard2);
//tableLayoutPanel_1.Controls.Add(axPpvsguard3);
//tableLayoutPanel_1.Controls.Add(axPpvsguard4);
Bind_RTLS();
BindECG(axPpvsguard1.Width, axPpvsguard1.Height);
}
else
{
tableLayoutPanel_1.Visible = false;
tableLayoutPanel_1.Controls.Clear();
//开启全屏
panel_Control.Controls.Add(panelControl_Show);
panelControl_Show.Visible = true;
AxPpvsguard axPpvsguard = (AxPpvsguard)sender;
panelControl_Show.Controls.Add(axPpvsguard);
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "全屏:\r\n" + ex);
}
}
///
/// 启用对讲
///
///
///
private void btn_EnableIntercom_Click(object sender, EventArgs e)
{
try
{
if (axPpvsguard1.OpenSound())
{
axPpvsguard1.VoiceTalkStart(1, 0);//启用对讲
btn_EnableIntercom.Enabled = false;
btn_TurnOffIntercom.Enabled = true;
return;
}
else if (axPpvsguard2.OpenSound())
{
axPpvsguard2.VoiceTalkStart(1, 0);//启用对讲
btn_EnableIntercom.Enabled = false;
btn_TurnOffIntercom.Enabled = true;
return;
}
//else if (axPpvsguard3.OpenSound())
//{
// axPpvsguard3.VoiceTalkStart(1, 0);//启用对讲
// btn_EnableIntercom.Enabled = false;
// btn_TurnOffIntercom.Enabled = true;
// return;
//}
//else if (axPpvsguard4.OpenSound())
//{
// axPpvsguard4.VoiceTalkStart(1, 0);//启用对讲
// btn_EnableIntercom.Enabled = false;
// btn_TurnOffIntercom.Enabled = true;
// return;
//}
else
{
XtraMessageBox.Show("启用对讲失败!请确认设备是否正常开启!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
//axPpvsguard1.OpenSound();
//axPpvsguard1.VoiceTalkStart(1, 0);//启用对讲
//axPpvsguard2.OpenSound();
//axPpvsguard2.VoiceTalkStart(1, 0);//启用对讲
//axPpvsguard3.OpenSound();
//axPpvsguard3.VoiceTalkStart(1, 0);//启用对讲
//axPpvsguard4.OpenSound();
//axPpvsguard4.VoiceTalkStart(1, 0);//启用对讲
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "启用对讲:\r\n" + ex);
}
}
///
/// 关闭对讲
///
///
///
private void btn_TurnOffIntercom_Click(object sender, EventArgs e)
{
try
{
if (axPpvsguard1.CloseSound())
{
axPpvsguard1.VoiceTalkStop();
btn_EnableIntercom.Enabled = true;
btn_TurnOffIntercom.Enabled = false;
return;
}
else if (axPpvsguard2.CloseSound())
{
axPpvsguard2.VoiceTalkStop();
btn_EnableIntercom.Enabled = true;
btn_TurnOffIntercom.Enabled = false;
return;
}
//else if (axPpvsguard3.CloseSound())
//{
// axPpvsguard3.VoiceTalkStop();
// btn_EnableIntercom.Enabled = true;
// btn_TurnOffIntercom.Enabled = false;
// return;
//}
//else if (axPpvsguard4.CloseSound())
//{
// axPpvsguard4.VoiceTalkStop();
// btn_EnableIntercom.Enabled = true;
// btn_TurnOffIntercom.Enabled = false;
// return;
//}
//axPpvsguard2.CloseSound();
//axPpvsguard2.VoiceTalkStop();
//axPpvsguard3.CloseSound();
//axPpvsguard3.VoiceTalkStop();
//axPpvsguard4.CloseSound();
//axPpvsguard4.VoiceTalkStop();
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "关闭对讲:\r\n" + ex);
}
}
///
/// 全屏
///
///
///
private void btn_FullScreen_Click(object sender, EventArgs e)
{
try
{
Form_RealTimeVideo_FullScreen frm = new Form_RealTimeVideo_FullScreen(axPpvsguard1);
if (frm.ShowDialog() == DialogResult.OK)
{
//axPpvsguard1 = (AxPpvsguard)frm.Control;
////加载四宫格
//panel_Control.Controls.Add(tableLayoutPanel_1);
//tableLayoutPanel_1.Visible = true;
tableLayoutPanel_1.Controls.Add(axPpvsguard1);
tableLayoutPanel_1.Controls.Add(axPpvsguard2);
//tableLayoutPanel_1.Controls.Add(axPpvsguard3);
//tableLayoutPanel_1.Controls.Add(axPpvsguard4);
Bind_RTLS();
BindECG(axPpvsguard1.Width, axPpvsguard1.Height);
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "全屏:\r\n" + ex);
}
}
///
/// 开启监听
///
///
///
private void btn_Voice_Click(object sender, EventArgs e)
{
try
{
if (axPpvsguard1.OpenSound())
{
btn_Voice.Visible = false;
btn_NoVoic.Visible = true;
return;
}
else if (axPpvsguard2.OpenSound())
{
btn_Voice.Visible = false;
btn_NoVoic.Visible = true;
return;
}
//else if (axPpvsguard3.OpenSound())
//{
// btn_Voice.Visible = false;
// btn_NoVoic.Visible = true;
// return;
//}
//else if (axPpvsguard4.OpenSound())
//{
// btn_Voice.Visible = false;
// btn_NoVoic.Visible = true;
// return;
//}
else
{
XtraMessageBox.Show("开启监听失败!请确认设备是否正常开启!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "开启监听:\r\n" + ex);
}
}
///
/// 关闭监听
///
///
///
private void btn_NoVoic_Click(object sender, EventArgs e)
{
try
{
if (axPpvsguard1.CloseSound())
{
btn_Voice.Visible = true;
btn_NoVoic.Visible = false;
return;
}
else if (axPpvsguard2.CloseSound())
{
btn_Voice.Visible = true;
btn_NoVoic.Visible = false;
return;
}
//else if (axPpvsguard3.CloseSound())
//{
// btn_Voice.Visible = true;
// btn_NoVoic.Visible = false;
// return;
//}
//else if (axPpvsguard4.CloseSound())
//{
// btn_Voice.Visible = true;
// btn_NoVoic.Visible = false;
// return;
//}
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "关闭监听:\r\n" + ex);
}
}
///
/// 绑定生命体征
///
/// 宽
/// 高
private void BindECG(int width, int height)
{
try
{
PatientInfo patientInfo = new PatientInfo();
patientInfo.patientName = Cur_PatientDT.Rows[0]["Name"].ToString();
patientInfo.patientAge = Cur_PatientDT.Rows[0]["Age"].ToString();
string Gender = PublicClass.ToString(Cur_PatientDT.Rows[0]["Gender"], "");
if (Gender == "1")
{
Gender = "男";
}
else if (Gender == "2")
{
Gender = "女";
}
else
{
Gender = "未知";
}
patientInfo.patientSex = Gender;
ECGShowParameter parameter = new ECGShowParameter();
parameter.width = width.ToString();
parameter.height = height.ToString();
parameter.patientFlag = "1";
parameter.patientInfo = patientInfo;
parameter.wardNo = Cur_PatientDT.Rows[0]["WardshipId"].ToString();
parameter.orgCode = Information.Hospital.Ecg_OrgCode;
string paras = JsonConvert.SerializeObject(parameter);
string dllPath = string.Format(Application.StartupPath + "\\ECG\\Hwyl.ECG_New.dll", System.Environment.CurrentDirectory);//dll组件路径
Assembly pAss = Assembly.LoadFrom(dllPath);//加载组件
Type pType = pAss.GetType("Hwyl.ECG_New.ECGViewControl");//获得类,ECG_New命名空间,ECGViewControl类名
MethodInfo pMtInfo = pType.GetMethod("ECGViewControl");//获得方法,ECGViewControl方法名
Control ECG = (Control)Activator.CreateInstance(pType, paras);
ECG.Dock = DockStyle.Fill;
//创建类实例
this.Invoke(new ThreadStart(() => tableLayoutPanel_1.Controls.Add(ECG)));
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(this.Text, "绑定生命体征:\r\n" + ex);
}
}
///
/// 实时定位
///
private void Bind_RTLS()
{
try
{
BindDefaultGPS();
#region 实时播放
string Url = string.Format("api/service/T_Service_Patient/{0}", Cur_PatientGuid);
DataTable PatientDT = DBHelpClass.GetDataRow(Url);
if (PatientDT != null && PatientDT.Rows.Count > 0)
{
string ambulanceGuid = "";
ambulanceGuid = PatientDT.Rows[0]["AmbulanceGuid"].ToString();
Url = string.Format("api/base/T_Base_Ambulance/GetServerInfoByGuid?guid={0}&serverType=1,3", ambulanceGuid);
DataTable ServerDT = DBHelpClass.GetJsonText(Url);
if (ServerDT != null && ServerDT.Rows.Count > 0)
{
Cur_DeviceId = ServerDT.Rows[0]["EquipmentCode"].ToString();
Cur_PlateNumber = ServerDT.Rows[0]["PlateNumber"].ToString();
string ServerIP = ServerDT.Rows[0]["ServerIP"].ToString();
string UserName = ServerDT.Rows[0]["UserName"].ToString();
string Password = ServerDT.Rows[0]["Password"].ToString();
int ServerPortNumber = int.Parse(ServerDT.Rows[0]["CommunicationPort"].ToString());
int StreamPortNumber = int.Parse(ServerDT.Rows[1]["CommunicationPort"].ToString());
axPpvsguard1.ConnectDeviceByACS(Cur_DeviceId, ServerIP, ServerPortNumber, UserName, Password);
int subscribeAllGPSNum = axPpvsguard1.SubscribeAllGPS(ServerIP, StreamPortNumber, UserName, Password, 0);
DictionaryXY.subScribeAllGPS = subscribeAllGPSNum;
if (subscribeAllGPSNum >= 0)
{
LpGPS = subscribeAllGPSNum;
axPpvsguard1.GPSComeEx += axPpvsguard_GPSComeEx;
}
}
}
#endregion
}
catch (Exception ex)
{
PublicClass.WriteErrorLog(Text, "绘制:\r\n" + ex);
}
}
///
/// 实时定位
///
///
///
private void axPpvsguard_GPSComeEx(object sender, _DPpvsguardEvents_GPSComeExEvent e)
{
if (e.lpDeviceID == Cur_DeviceId)
{
Longitude = e.lpX;//经度
Latitude = e.lpY;//纬度
Speed = e.lpSpeed;
Time = e.lpSampleTime;
webMap.BD_MapDirectionShow(Cur_PlateNumber, e.lpDirection, Convert.ToDouble(Longitude), Convert.ToDouble(Latitude));
}
}
///
/// 绑定默认的GPS位置
///
private void BindDefaultGPS()
{
WebBrowser webBrowser = new WebBrowser();
webBrowser.Dock = DockStyle.Fill;
webMap.WebBrowser1 = webBrowser;
tableLayoutPanel_1.Controls.Add(webBrowser);
M_CarGPS m_CarGPS = new M_CarGPS();
#region 赋予默认值信息
string HospitalGUID = PublicClass.ToString(Cur_PatientDT.Rows[0]["HospitalGuid"], "");
//根据医院ID获取到经纬度
string Url = string.Format("api/base/T_Base_Hospital/GetByGuid?guid={0}", HospitalGUID);
DataTable HospitalDT = DBHelpClass.Get(Url);
if (HospitalDT != null && HospitalDT.Rows.Count > 0)
{
//根据默认急救车编号获取到急救车牌号和设备ID
string DefaultAmbulanceGuid = PublicClass.ToString(HospitalDT.Rows[0]["DefaultAmbulanceGuid"], "");
if (!string.IsNullOrEmpty(DefaultAmbulanceGuid))
{
DataTable AmbulanceDT = DBHelpClass.GetJsonText(string.Format("/api/base/T_Base_Ambulance/GetGPSInfoByGuid?guid={0}", DefaultAmbulanceGuid));
if (AmbulanceDT != null && AmbulanceDT.Rows.Count > 0)
{
m_CarGPS.ambulanceNumber = AmbulanceDT.Rows[0]["PlateNumber"].ToString();
m_CarGPS.deviceId = AmbulanceDT.Rows[0]["EquipmentCode"].ToString();
m_CarGPS.lpX = HospitalDT.Rows[0]["Longitude"].ToString();//经度
m_CarGPS.lpY = HospitalDT.Rows[0]["Latitude"].ToString();//纬度
}
}
}
#endregion
webMap.LoadDefaultUrl(m_CarGPS);
axPpvsguard1 = new AxPpvsguard();
axPpvsguard1.BeginInit();
ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof(Form_FirstAidTrack));
axPpvsguard1.Dock = DockStyle.Fill;
axPpvsguard1.Enabled = true;
axPpvsguard1.Location = new Point(0, 0);
axPpvsguard1.Name = "axPpvsguard1";
axPpvsguard1.OcxState = (AxHost.State)componentResourceManager.GetObject("axPpvsguard1.OcxState");
//axPpvsguard1.Size = new Size(1046, 650);
//axPpvsguard1.TabIndex = 0;
//AutoScaleDimensions = new SizeF(6f, 12f);
//AutoScaleMode = AutoScaleMode.Font;
//ClientSize = new Size(1046, 650);
Controls.Add(axPpvsguard1);
axPpvsguard1.EndInit();
}
#region 调用珠海德瑞斯车载视频代码
public void SendMeassage()
{
IPEndPoint point = new IPEndPoint(IPAddress.Parse("192.168.6.70"), 7880);
RemisCommonandMsg msg = new RemisCommonandMsg();
msg.CallTime = PublicClass.DateTimeNow();
msg.CommID = 1;
msg.CarNO = 30;
msg.userId = 61;
msg.Title = "视频";
byte[] data = StructToBytes(msg);
UdpClient udpClient = new UdpClient();
Byte[] sendBytes = Encoding.ASCII.GetBytes(msg.ToString());
try
{
udpClient.Send(sendBytes, sendBytes.Length, point);
}
catch (SocketException ex)
{
MessageBox.Show(ex.ErrorCode.ToString());
}
}
///
/// 将struct类型转换为byte[]
///
public static byte[] StructToBytes(object structObj)
{
int size = Marshal.SizeOf(structObj);
IntPtr buffer = Marshal.AllocHGlobal(size);
try
{
Marshal.StructureToPtr(structObj, buffer, false);
byte[] bytes = new byte[size];
Marshal.Copy(buffer, bytes, 0, size);
return bytes;
}
finally
{
Marshal.FreeHGlobal(buffer);
}
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct RemisCommonandMsg
{
///
/// 调用时间
///
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string CallTime;//调用时间
///
/// 通讯指令号
///
public int CommID;//指令号 *
///
/// 车辆编号 *
///
public int CarNO;
///
/// 医院编号
///
public int HospitalID;
///
/// 医院值班室监控设备ID号
///
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)]
public string HospitalZBS;
///
/// 医院停车位监控设备ID号
///
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)]
public string HospitalTCW;
///
/// 视频监控窗口标题
///
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string Title;
///
/// 视频视频回放开始时间
///
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string StartTime;
///
/// 视频视频回放结束时间
///
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
public string EndTime;
///
/// 备用
///
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public string Memo;
///
/// 发送方的handle
///
public int WindowHandle;
///
/// 调用标识
///
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 50)]
public string CommandID;
///
/// 发送指令用户Id号 *
///
public int userId;
}
///
/// 指令编号
///
public enum CommonType : int
{
///
/// 打开救护车视频
///
openCarVideo = 1
}
#endregion
}
}