//************************************************ //非阻塞模式下数据处理定时器 //************************************************ private void Timer3Tick(object sender, EventArgs e) { //int i; var recdPtr = new GprsDataRecord(); var mess = new StringBuilder(100); //读取DTU数据 if (ServMode == 1) { if (Gprs.Gprs.do_read_proc(ref recdPtr, mess, true/*checkBox2.Checked*/) >= 0) { //RefreshList(); switch (recdPtr.m_data_type) { case 0x01: //注册包 var userInfo = new GprsUserInfo(); //ushort usPort; if (Gprs.Gprs.get_user_info(recdPtr.m_userid, ref userInfo) == 0) { //已经注册过 AddText("\n" + recdPtr.m_userid + "---注册" + "\r\n"); //for (i = 0; i < listView1.Items.Count; i++) // if (listView1.Items[i].Text == user_info.m_userid) // { // listView1.Items[i].SubItems.Add(user_info.m_logon_date); // listView1.Items[i].SubItems.Add(user_info.m_update_time.ToString()); // listView1.Items[i].SubItems.Add(Gprs.Gprs.inet_ntoa(Gprs.Gprs.ntohl(user_info.m_sin_addr))); // usPort = user_info.m_sin_port; // listView1.Items[i].SubItems.Add(usPort.ToString()); // listView1.Items[i].SubItems.Add(Gprs.Gprs.inet_ntoa(Gprs.Gprs.ntohl(user_info.m_local_addr))); // usPort = user_info.m_local_port; // listView1.Items[i].SubItems.Add(usPort.ToString()); // return; // } //没有注册过 } //RefreshList(); break; case 0x02: //注销包 AddText("\n" + recdPtr.m_userid + "---注销" + "\r\n"); //for (i = 0; i < listView1.Items.Count; i++) // if (listView1.Items[i].Text == recdPtr.m_userid) // { // listView1.Items[i].Remove(); // break; // } break; case 0x04: //无效包 break; case 0x09: //数据包 //if(checkBox1.Checked) // AddText("\r\n" + recdPtr.m_userid +"---"+ recdPtr.m_recv_date + "---"+recdPtr.m_data_len.ToString()+"\r\n" // +StrToHex(recdPtr.m_data_buf,recdPtr.m_data_len)+"\r\n"); //else // AddText("\r\n" + recdPtr.m_userid +"---"+ recdPtr.m_recv_date + "---"+recdPtr.m_data_len.ToString()+"\r\n" // +System.Text.Encoding.Default.GetString(recdPtr.m_data_buf)+"\r\n"); break; case 0x0d: //AddText("\n"+recdPtr.m_userid+"---参数设置成功"+"\r\n"); //config.timer3.Enabled = false;++++++++++++++ //config.button2.Enabled = true;++++++++++++++ MessageBox.Show(Resources.FMain_Timer3Tick_参数设置成功, Resources.FMain_Timer3Tick_信息, MessageBoxButtons.OK, MessageBoxIcon.Information); break; case 0x0b: //AddText("\n"+recdPtr.m_userid+"---参数查询成功"+"\r\n"); //config.readconf();++++++++++++++ //config.timer2.Enabled = false;++++++++++++++ //config.button1.Enabled = true;++++++++++++++ MessageBox.Show(Resources.FMain_Timer3Tick_参数查询成功, Resources.FMain_Timer3Tick_信息, MessageBoxButtons.OK, MessageBoxIcon.Information); break; case 0x06: //AddText("\n"+recdPtr.m_userid+"---断开PPP连接成功"+"\r\n"); break; case 0x07: //AddText("\n"+recdPtr.m_userid+"---停止向DSC发送数据"+"\r\n"); break; case 0x08: //AddText("\n"+recdPtr.m_userid+"---允许向DSC发送数据"+"\r\n"); break; case 0x0A: //AddText("\n"+recdPtr.m_userid+"---丢弃用户数据"+"\r\n"); break; } } } }
//******************************************* //消息模式时定义消息的响应函数 //******************************************* protected override void WndProc(ref Message m) { //int i; //响应DTU消息 if (m.Msg == Gprs.Gprs.WmDtu) { var recdPtr = new GprsDataRecord(); var mess = new StringBuilder(100); //开发包函数,读取DTU数据 if (Gprs.Gprs.do_read_proc(ref recdPtr, mess, true/*checkBox2.Checked*/) >= 0) { //RefreshList(); switch (recdPtr.m_data_type) { case 0x01: //注册包 var userInfo = new GprsUserInfo(); //ushort usPort; if (Gprs.Gprs.get_user_info(recdPtr.m_userid, ref userInfo) == 0)//开发包函数,通过ID获取DTU信息 { //已经注册过 //AddText("\n"+recdPtr.m_userid + "---注册"+"\r\n"); // RefreshList();//刷新终端登陆列表 } break; case 0x02: //注销包 //AddText("\n"+recdPtr.m_userid + "---注销"+"\r\n"); //收到的是注销包,从终端登陆列表中删除该DTU信息 //for (i = 0; i < listView1.Items.Count; i++) // if (listView1.Items[i].Text == recdPtr.m_userid) // { // listView1.Items[i].Remove(); // break; // } break; case 0x04: //无效包 break; case 0x09: //数据包 //16进制显示收到的数据 //if (checkBox1.Checked) { //DtuStateObject state = new DtuStateObject(); //state.Aera_IrradiatedSum = 10; //Dqueue.EnQueueItem(state); //logger.Info("Receive a message from Gprs Modules!."); //AddText("\r\n" + recdPtr.m_userid + "---" + recdPtr.m_recv_date + "---" + recdPtr.m_data_len.ToString() + "\r\n" // + StrToHex(recdPtr.m_data_buf, recdPtr.m_data_len) + "\r\n"); // Global.Dqueue.EnQueueItem(recdPtr); } // else //显示数据 //AddText("\r\n" + recdPtr.m_userid + "---" + recdPtr.m_recv_date + "---" + recdPtr.m_data_len.ToString() + "\r\n" // + System.Text.Encoding.Default.GetString(recdPtr.m_data_buf) + "\r\n"); break; case 0x0d: //收到参数设置成功数据包,取消参数设置超时定时器 //AddText("\n"+recdPtr.m_userid+"---参数设置成功"+"\r\n"); //config.timer3.Enabled = false;+++++++ //config.button2.Enabled = true;+++++++ MessageBox.Show(Resources.FMain_Timer3Tick_参数设置成功, Resources.FMain_Timer3Tick_信息, MessageBoxButtons.OK, MessageBoxIcon.Information); break; case 0x0b: //收到查询参数数据包,取消参数查询超时定时器,并读取各项参数到DEMO //AddText("\n"+recdPtr.m_userid+"---参数查询成功"+"\r\n"); //config.readconf();//读取各项参数+++++++ //config.timer2.Enabled = false;+++++++ //config.button1.Enabled = true;+++++++ MessageBox.Show(Resources.FMain_Timer3Tick_参数查询成功, Resources.FMain_Timer3Tick_信息, MessageBoxButtons.OK, MessageBoxIcon.Information); break; case 0x06: //AddText("\n"+recdPtr.m_userid+"---断开PPP连接成功"+"\r\n"); break; case 0x07: //AddText("\n"+recdPtr.m_userid+"---停止向DSC发送数据"+"\r\n"); break; case 0x08: //AddText("\n"+recdPtr.m_userid+"---允许向DSC发送数据"+"\r\n"); break; case 0x0A: //AddText("\n"+recdPtr.m_userid+"---丢弃用户数据"+"\r\n"); break; } } } else { //缺省消息处理 base.WndProc(ref m); } }
public static extern int get_user_info( [MarshalAs(UnmanagedType.LPStr)] string userid, ref GprsUserInfo infoPtr);
//**************************************** //远程参数配置菜单响应函数 //**************************************** private void ToolStripMenuItemRemoteParaSetClick(object sender, EventArgs e) { uint i; var userInfo = new GprsUserInfo(); Config = new FCenterConfig(); var iDtuAmount = Gprs.Gprs.get_max_user_amount(); for (i = 0; i < iDtuAmount; i++) { Gprs.Gprs.get_user_at(i, ref userInfo);//开发包函数,通过DTU顺序号获得DTU信息 if (userInfo.m_status == 1)//在线 { //向列表框添加ID号 Config.comboBox8.Items.Add(userInfo.m_userid); } } Config.ShowDialog(); }
public static extern int get_user_at(uint index, ref GprsUserInfo infoPtr);