📄 mainfrom.cs
字号:
ShowGPSData(gpsData.Terminal_Id + "已停止回送数据" + newline());
return;
default:
return;
}
SaveData(gpsData);
}
/// <summary>
/// 保存接收到的GPS数据
/// </summary>
/// <param name="bs"></param>
private void SaveGPSData(byte[] bs)
{
GPSData gpsData = new GPSData();
#region 设置数据
/*获取编号*/
gpsData.Terminal_Id = Convert.ToInt32(
Convert.ToString(bs[5], 16) + Convert.ToString(bs[6], 16) +
Convert.ToString(bs[7], 16) + Convert.ToString(bs[8], 16));
/*获取时间*/
gpsData.AddTime = Convert.ToDateTime(
Convert.ToString(bs[10], 16) + ":"
+ Convert.ToString(bs[11], 16) + ":"
+ Convert.ToString(bs[12], 16));
gpsData.OriginalLatitude = Convert.ToDouble(
Convert.ToInt32(Convert.ToString(bs[13], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[14], 16)).ToString("00")
+ "."
+ Convert.ToInt32(Convert.ToString(bs[15], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[16], 16)).ToString("00")
);
/*获取纬度*/
gpsData.Latitude = Convert.ToString(Math.Truncate(gpsData.OriginalLatitude / 100)) + "°" +
Convert.ToString(Math.Truncate(Math.IEEERemainder(gpsData.OriginalLatitude, 100))) + "′" +
Convert.ToString(
Math.Round(
(Math.IEEERemainder(gpsData.OriginalLatitude, 100) - Math.Truncate(Math.IEEERemainder(gpsData.OriginalLatitude, 100))) * 60, 0, MidpointRounding.AwayFromZero)
) + "″";
gpsData.OriginalLongitude = Convert.ToDouble(
Convert.ToInt32(Convert.ToString(bs[17], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[18], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[19], 16)).ToString("00")
+ "." + Convert.ToInt32(Convert.ToString(bs[20], 16)).ToString("00")
+ Convert.ToInt32(Convert.ToString(bs[21], 16)).ToString("00")
);
/*获取经度*/
gpsData.Longitude = Convert.ToString(Math.Truncate(gpsData.OriginalLongitude / 100)) + "°" +
Convert.ToString(Math.Truncate(Math.IEEERemainder(gpsData.OriginalLongitude, 100))) + "′" +
Convert.ToString(
Math.Round(
(Math.IEEERemainder(gpsData.OriginalLongitude, 100) - Math.Truncate(Math.IEEERemainder(gpsData.OriginalLongitude, 100))) * 60, 0, MidpointRounding.AwayFromZero)
) + "″";
;//Math.IEEERemainder(gpsData.Latitude, 100) / 60;
/*获取高度*/
gpsData.Height = Convert.ToDouble(
Convert.ToInt32(Convert.ToString(bs[22], 16)).ToString("00") + Convert.ToInt32(Convert.ToString(bs[23], 16)).ToString("00")
+ "." + Convert.ToString(bs[24], 16));
#endregion
switch (Convert.ToString(bs[9], 16).ToUpper())
{
case "89":
if (IsShowData)
{
ShowGPSData(
"终端" + Convert.ToInt32(Convert.ToString(bs[5], 16) + Convert.ToString(bs[6], 16) + Convert.ToString(bs[7], 16) + Convert.ToString(bs[8], 16)).ToString() +
" 北纬" + gpsData.Latitude +
" 东经" + gpsData.Longitude +
" 海拔" + gpsData.Height.ToString() +
" 时间" + gpsData.AddTime.ToString("hh:mm:ss" + newline())
);
}
break;
case "4B":
ShowGPSData(Convert.ToInt32(
Convert.ToString(bs[5], 16) + Convert.ToString(bs[6], 16) +
Convert.ToString(bs[7], 16) + Convert.ToString(bs[8], 16)).ToString() + "时间设置成功" + newline());
return;
case "50":
ShowGPSData(Convert.ToInt32(
Convert.ToString(bs[5], 16) + Convert.ToString(bs[6], 16) +
Convert.ToString(bs[7], 16) + Convert.ToString(bs[8], 16)).ToString() + "已停止回送数据" + newline());
return;
default:
return;
}
SaveData(gpsData);
}
private void SaveData(GPSData data)
{
Database db = DatabaseFactory.CreateDatabase();
StringBuilder sb = new StringBuilder();
sb.Append("INSERT INTO [soft_sailingservice].[dbo].[NS_GPS_Data]");
sb.Append("([TerminalNumber],[Latitude],[OriginalLatitude],[Longitude],[OriginalLongitude],[Height],[AddTime])");
sb.Append("VALUES (");
sb.Append(data.Terminal_Id + ",'");
sb.Append(data.Latitude + "',");
sb.Append(data.OriginalLatitude + ",'");
sb.Append(data.Longitude + "',");
sb.Append(data.OriginalLongitude + ",");
sb.Append(data.Height + ",'");
sb.Append(data.AddTime + "')");
db.ExecuteNonQuery(CommandType.Text, sb.ToString());
}
#region 按钮事件处理
private void MainFrom_Load(object sender, EventArgs e)
{
f_BG.DoWork += new DoWorkEventHandler(bgWorkerAnalyze_DoWork);
f_BG.RunWorkerAsync();
toolStripButtonOpenPort.Enabled = true;
toolStripButtonClosePort.Enabled = false;
}
private void toolStripButtonConfig_Click(object sender, EventArgs e)
{
if (toolStripButtonClosePort.Enabled != false)
{
MessageBox.Show("请先关闭串口\n更改配置前先关闭串口", "提示");
return;
}
ConfigForm form = new ConfigForm();
if (form.ShowDialog() == DialogResult.OK)
{
ports = new System.IO.Ports.SerialPort[SerialPortConfig.Ports.Count];
for (int i = 0; i < SerialPortConfig.Ports.Count; i++)
{
ports[i] = new System.IO.Ports.SerialPort(SerialPortConfig.Ports[i].ToString());
ports[i].BaudRate = SerialPortConfig.BaudRate;
ports[i].Parity = SerialPortConfig.Parity;
ports[i].StopBits = SerialPortConfig.StopBits;
ports[i].DataBits = SerialPortConfig.DataBits;
ports[i].ReceivedBytesThreshold = 29;
//ports[i].ReadTimeout = 50;
}
}
}
private void toolStripButtonOpenPort_Click(object sender, EventArgs e)
{
if (SerialPortConfig.Ports.Count == 0)
{
MessageBox.Show("当前没有已选择串口\n请配置串口","提示");
return;
}
OpenPort();
tbPortState.Text += "已启动接收数据……" + newline();
toolStripButtonOpenPort.Enabled = false;
toolStripButtonClosePort.Enabled = true;
}
private void toolStripButtonClosePort_Click(object sender, EventArgs e)
{
tbPortState.Text += "已停止接收数据" + newline();
ClosePort();
toolStripButtonOpenPort.Enabled = true;
toolStripButtonClosePort.Enabled = false;
}
private void btnReceiveEnd_Click(object sender, EventArgs e)
{
//btnReceiveEnd.Enabled = false;
//btnRecevieStart.Enabled = true;
tbPortState.Text += "已停止接收数据" + newline();
for (int i = 0; i < SerialPortConfig.Ports.Count; i++)
{
ports[i].DataReceived -= new System.IO.Ports.SerialDataReceivedEventHandler(SPort_DataReceived);
}
}
private void btnSave_Click(object sender, EventArgs e)
{
//btnSave.Enabled = false;
//StreamWriter sw = File.AppendText("ReceiveData.txt");
//sw.Write(tbView.Text);
//sw.Flush();
//sw.Close();
//MessageBox.Show("状态信息保存成功","提示");
//btnSave.Enabled = true;
}
private void toolStripButtonSetTime_Click(object sender, EventArgs e)
{
SetTimeForm form = new SetTimeForm(ports);
form.ShowDialog();
}
private void toolStripButtonEchoplex_Click(object sender, EventArgs e)
{
EchoplexOperationForm form = new EchoplexOperationForm(ports);
form.ShowDialog();
}
private void toolStripButtonDBConfig_Click(object sender, EventArgs e)
{
DBConfigForm form = new DBConfigForm();
form.ShowDialog();
}
private void btnClear_Click(object sender, EventArgs e)
{
tbPortState.Text = "";
tbView.Text = "";
}
private void chkShowData_CheckedChanged(object sender, EventArgs e)
{
if (chkShowData.Checked)
{
IsShowData = true;
}
else
{
IsShowData = false;
}
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -