`
isiqi
  • 浏览: 16561729 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论
阅读更多


using System; using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
//using System.Messaging;
using System.Net.Sockets;
using System.Text;
using System.Runtime.InteropServices;
using System.IO;
using System.Threading ;
using System.Net;
namespace GprsServer
{ public class GprsServer : System.Windows.Forms.Form
{
[DllImport("User32.dll",EntryPoint="SendMessage")]
private static extern int SendMessage( int hWnd, // handle to destination window
int Msg, // message
int wParam, // first message parameter
string lParam // second message parameter
);
[DllImport("User32.dll",EntryPoint="FindWindow")] private static extern int FindWindow(string lpClassName,string lpWindowName);
[DllImport("kernel32.dll")] public static extern int GetPrivateProfileString ( string section ,string key , string def , StringBuilder retVal ,int size , string filePath ) ;
[DllImport("kernel32")] public static extern long WritePrivateProfileString ( string section,string key,string val,string filePath ) ;
private System.ComponentModel.IContainer components; public static int LocaPort;//本地端口
public static string RemoteIp; public static int RemotePort;//远程端口
public static string sCompanyName;//公司名称
private Icon m_Icon1; private Icon m_Icon2; private Icon m_Icon3;
private NotifyIcon notifyIcon;
MenuItem menuItem1;
MenuItem menuItem2;
private Hashtable CarID_RemoteIP_Hash;
private Thread thGprs ;
private Thread thTcpMsg ;
private Socket socket;
private Socket TcpSocket;
private System.Windows.Forms.Timer TimerIcon;
private System.Windows.Forms.Label lblInfo;
private System.Windows.Forms.Timer TimerConn;
private byte[] TempBuff;
private System.Windows.Forms.CheckBox checkBox1;
private System.Windows.Forms.ImageList imgList;// = new byte[1024];
private byte[] TcpBuff;
private System.Windows.Forms.ListView lvwMsg;
private System.Windows.Forms.ColumnHeader sId;
private System.Windows.Forms.ColumnHeader sNote;
private System.Windows.Forms.Button cmdExit;
private System.Windows.Forms.Button cmdSet;// = new byte[2048];
private bool bTsFlag=false;
public GprsServer()
{
InitializeComponent(); //检测配置文件目录是否存在
GetSysPra(); TempBuff= new byte[1];
TcpBuff=new byte[1];
//m_Icon1 = new Icon("SysFile\\Icon1.ico");
//m_Icon2 = new Icon("SysFile\\Icon2.ico");
//m_Icon3 = new Icon("SysFile\\Icon3.ico");
notifyIcon = new NotifyIcon();
notifyIcon.Icon = m_Icon1;
notifyIcon.Text = sCompanyName;
notifyIcon.Visible = true;
menuItem1=new MenuItem("设置");
menuItem2=new MenuItem("退出");
menuItem1.Click+=new EventHandler(this.menuItem1_Click);
menuItem2.Click+=new EventHandler(this.menuItem2_Click);
notifyIcon.ContextMenu=new ContextMenu(new MenuItem[]{menuItem1,menuItem2});
notifyIcon.DoubleClick+=new System.EventHandler(this.notifyIcon_DBClick);
CarID_RemoteIP_Hash=new Hashtable();
thGprs = new Thread(new ThreadStart(ReadUdp)) ;
//启动线程 thGprs.IsBackground =true;//将线程作为后台线程处理,用途,当主线程关闭,子线程随着关闭
thGprs.Start( );
try { IPHostEntry IPHost = Dns.Resolve(RemoteIp);
string []aliases = IPHost.Aliases;
IPAddress []addr = IPHost.AddressList; EndPoint ep = new IPEndPoint(addr[0],RemotePort);
TcpSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); TcpSocket.Connect(ep);
thTcpMsg = new Thread (new ThreadStart(ReadTcpMsg)) ; //启动线程
thTcpMsg.IsBackground =true; thTcpMsg.Start( ) ; lblInfo.Text ="系统运行正常,正在中转GPRS数据...";
} catch {} }
private void GetSysPra()
{
StringBuilder temp = new StringBuilder(255);
if (Directory.Exists("SysIni"))
{ if (File.Exists("SysIni\\SysIni.ini"))
{ int i; i= GetPrivateProfileString("PortIni","UdpPort","",temp,255,"SysIni\\SysIni.ini");
if (i==0)
{ LocaPort=8888; WritePrivateProfileString("PortIni","UdpPort","8888","SysIni\\SysIni.ini");
}
else
{ LocaPort=int.Parse(temp.ToString( ));
}
i = GetPrivateProfileString("Company","Name","",temp,255,"SysIni\\SysIni.ini");
if (i==0) { sCompanyName="龙翰科技"; WritePrivateProfileString("Company","Name","龙翰科技","SysIni\\SysIni.ini");
} else { sCompanyName=temp.ToString( );
} i = GetPrivateProfileString("PortIni","TcpAddress","",temp,255,"SysIni\\SysIni.ini");
if (i==0) { RemoteIp="127.0.0.1"; WritePrivateProfileString("PortIni","TcpAddress","127.0.0.1","SysIni\\SysIni.ini");
}
else { RemoteIp=temp.ToString( );
}
i = GetPrivateProfileString("PortIni","TcpPort","",temp,255,"SysIni\\SysIni.ini");
if (i==0) { RemotePort=6666; WritePrivateProfileString("PortIni","TcpPort","6666","SysIni\\SysIni.ini");
} else { RemotePort=int.Parse(temp.ToString( )); }
} else
{ //
File.Create("SysIni\\SysIni.ini",255);
LocaPort=8888;
WritePrivateProfileString("PortIni","UdpPort","8888","SysIni\\SysIni.ini");
sCompanyName="龙翰科技"; WritePrivateProfileString("Company","Name","龙翰科技","SysIni\\SysIni.ini");
RemoteIp="127.0.0.1"; WritePrivateProfileString("PortIni","TcpAddress","127.0.0.1","SysIni\\SysIni.ini");
RemotePort=6666; WritePrivateProfileString("PortIni","TcpPort","6666","SysIni\\SysIni.ini");
}
} else
{ Directory.CreateDirectory("SysIni");
//
File.Create("SysIni\\SysIni.ini",255);
LocaPort=8888;
WritePrivateProfileString("PortIni","UdpPort","8888","SysIni\\SysIni.ini");
sCompanyName="龙翰科技"; WritePrivateProfileString("Company","Name","龙翰科技","SysIni\\SysIni.ini");
RemoteIp="127.0.0.1"; WritePrivateProfileString("PortIni","TcpAddress","127.0.0.1","SysIni\\SysIni.ini"); RemotePort=6666;
WritePrivateProfileString("PortIni","TcpPort","6666","SysIni\\SysIni.ini"); } }
private void menuItem1_Click(object sender,System.EventArgs e)
{
//
}
private void menuItem2_Click(object sender,System.EventArgs e)
{ this.Close(); Application.Exit();
}
private void notifyIcon_DBClick(object sender, System.EventArgs e)
{
//
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
} notifyIcon.Visible =false;;
notifyIcon.Icon=null; notifyIcon.Dispose();
m_Icon1.Dispose(); m_Icon2.Dispose(); m_Icon3.Dispose();
}
base.Dispose( disposing );
}
private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(GprsServer));
this.TimerIcon = new System.Windows.Forms.Timer(this.components); this.lblInfo = new System.Windows.Forms.Label(); this.TimerConn = new System.Windows.Forms.Timer(this.components);
this.lvwMsg = new System.Windows.Forms.ListView(); this.sId = new System.Windows.Forms.ColumnHeader(); this.sNote = new System.Windows.Forms.ColumnHeader();
this.imgList = new System.Windows.Forms.ImageList(this.components); this.checkBox1 = new System.Windows.Forms.CheckBox(); this.cmdExit = new System.Windows.Forms.Button();
this.cmdSet = new System.Windows.Forms.Button(); this.SuspendLayout(); // // TimerIcon //
this.TimerIcon.Enabled = true; this.TimerIcon.Interval = 1000; this.TimerIcon.Tick += new System.EventHandler(this.TimerIcon_Tick); // // lblInfo //
this.lblInfo.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.lblInfo.Location = new System.Drawing.Point(4, 298);
this.lblInfo.Name = "lblInfo"; this.lblInfo.Size = new System.Drawing.Size(310, 23); this.lblInfo.TabIndex = 0;
this.lblInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; // // TimerConn //
this.TimerConn.Enabled = true;
this.TimerConn.Interval = 6000; this.TimerConn.Tick += new System.EventHandler(this.TimerConn_Tick); // // lvwMsg //
this.lvwMsg.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.sId, this.sNote}); this.lvwMsg.FullRowSelect = true;
this.lvwMsg.Location = new System.Drawing.Point(2, 2); this.lvwMsg.Name = "lvwMsg"; this.lvwMsg.Size = new System.Drawing.Size(564, 292);
this.lvwMsg.SmallImageList = this.imgList; this.lvwMsg.TabIndex = 1; this.lvwMsg.View = System.Windows.Forms.View.Details; // // sId //
this.sId.Text = ""; this.sId.Width = 21; // // sNote // this.sNote.Text = "消息内容"; this.sNote.Width = 522; // // imgList //
this.imgList.ColorDepth = System.Windows.Forms.ColorDepth.Depth16Bit; this.imgList.ImageSize = new System.Drawing.Size(16, 16);
// this.imgList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgList.ImageStream")));
this.imgList.TransparentColor = System.Drawing.Color.Transparent; // // checkBox1 //

this.checkBox1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
this.checkBox1.Location = new System.Drawing.Point(332, 300); this.checkBox1.Name = "checkBox1"; this.checkBox1.Size = new System.Drawing.Size(104, 19);
this.checkBox1.TabIndex = 2; this.checkBox1.Text = "显示调试数据"; this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); // // cmdExit //
this.cmdExit.FlatStyle = System.Windows.Forms.FlatStyle.Popup; this.cmdExit.Location = new System.Drawing.Point(504, 298); this.cmdExit.Name = "cmdExit";
this.cmdExit.Size = new System.Drawing.Size(60, 22); this.cmdExit.TabIndex = 3; this.cmdExit.Text = "退出(&E)"; this.cmdExit.Click += new System.EventHandler(this.cmdExit_Click); // // cmdSet //
this.cmdSet.FlatStyle = System.Windows.Forms.FlatStyle.Popup; this.cmdSet.Location = new System.Drawing.Point(432, 298); this.cmdSet.Name = "cmdSet"; this.cmdSet.Size = new System.Drawing.Size(60, 22); this.cmdSet.TabIndex = 4; this.cmdSet.Text = "设置(&S)"; this.cmdSet.Click += new System.EventHandler(this.cmdSet_Click); // // GprsServer //
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(566, 323); this.Controls.Add(this.cmdSet);
this.Controls.Add(this.cmdExit); this.Controls.Add(this.checkBox1); this.Controls.Add(this.lvwMsg); this.Controls.Add(this.lblInfo);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.MaximizeBox = false;
this.Name = "GprsServer"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "中继服务器"; this.Load += new System.EventHandler(this.GprsServer_Load);
this.ResumeLayout(false); }
static void Main()
{
Application.Run(new GprsServer());
}
private byte Get_CheckXor(ref byte[] temp,int len)
{


byte A=0; for(int i=0;i<len;i++)
{
A^=temp[i];
}
return A;
}
private void ReadTcpMsg() //读取用户发送的指令数据
{
byte[] buff= new byte[2048];
string CartIpAddress="";//车辆的IP地址
EndPoint TempRemote = null;
int recv = 0;
byte[] Tbuff;
byte[] AllBuff;
int iLenght=0;
int iIndex=0;
int iLen=0;
int iXorValue=0;

while(true)
{
try
{

recv=TcpSocket.Receive(buff,0,TcpSocket.Available,SocketFlags.None);//读取数据内容
if (recv==0)
{
recv=TcpSocket.Receive(buff,0,TcpSocket.Available,SocketFlags.None);//读取数据内容
if (recv==0)
{
TcpSocket.Close();
break;
}
}
}

catch
{
break;
}
AllBuff=new byte[recv +TcpBuff.Length];
for (iIndex = 1; iIndex <=TcpBuff.Length; iIndex++)

{
AllBuff[iIndex-1]=TcpBuff[iIndex-1];
}
for (iIndex = 1; iIndex <=recv; iIndex++)
{
AllBuff[TcpBuff.Length+iIndex-1]=buff[iIndex-1];
}
for (iIndex = 1; iIndex <=AllBuff.Length; iIndex++)
{
iLenght=AllBuff.Length-iIndex+1;
if (iLenght<6)//检测数据包长度
{
//不完整,则将指令保存
if (iLenght>0)
{
TcpBuff=new byte[iLenght];
for (iLen = 1; iLen <=iLenght; iLen++)
{
TcpBuff[iLen-1]=AllBuff[iLen+iIndex-2];
}
}
break;
}
else
{ //检测当前指令是否是完整的指令,查找数据包头
if (AllBuff[iIndex-1]==0x29 & AllBuff[iIndex]==0x29)

{
if ((AllBuff.Length -iIndex)>=(AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+4))

{ //检测当前指令是否是完整的指令

if ((AllBuff[AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+iIndex+3])==0x0D)

{ //在接收的数据中获取单条完整的指令数据

Tbuff=new byte[AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+5];

for (iLen = 1; iLen <=Tbuff.Length; iLen++)

{
Tbuff[iLen-1]=AllBuff[iLen+iIndex-2];

}

iXorValue=Get_CheckXor(ref Tbuff,Tbuff.Length-2);

if(iXorValue!=Tbuff[Tbuff.Length-2])
{ //校验不合格,继续查找合法指令数据

continue;

}
else

{
if (bTsFlag)

{
string BuffToStr="";


for(int i=0;i<Tbuff.Length;i++)


{

BuffToStr+=Tbuff[i].ToString("X2")+" ";


}

ShowSysMsg(BuffToStr,2);

} //获取车载终端手机号
CartIpAddress=Tbuff[5]+"." +Tbuff[6] +"."+Tbuff[7] +"."+Tbuff[8];
TempRemote=(EndPoint)CarID_RemoteIP_Hash[CartIpAddress];
if( TempRemote==null)
{
if (bTsFlag)

{
ShowSysMsg("无法查找到接收数据的远程终节点!",3);
}
}
else
{
try
{
socket.SendTo(Tbuff,TempRemote);

if (bTsFlag)
{
ShowSysMsg("数据成功转发到车载终端!",1);
}
}
catch

{
if (bTsFlag)

{ ShowSysMsg("数据转发到车载终端失败!",3);

}
}
}
iIndex=iIndex+Tbuff.Length-1;
TcpBuff=new byte[1];

}

}


else

{

continue;

}
}
else
{

if
((AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+4)>1024)

{
continue;
}

else { //不完整,则将指令保存

if (iLenght>0)

{

TcpBuff=new byte[iLenght];

for (iLen = 1; iLen <=iLenght; iLen++)

{
TcpBuff[iLen-1]=AllBuff[iLen+iIndex-2];

}
break;

}
else
{

TcpBuff=new byte[1];
break;
}

}
}
}
else
{ continue;
}
}//检测数据包长度
}
}
}
public void ShowSysMsg(string sNote,int iIcon)
{ //显示系统消息
try {
lvwMsg.BeginUpdate();
if (lvwMsg.Items.Count >100) lvwMsg.Items.Clear();
ListViewItem li = new ListViewItem();
//
li.SubItems[0].Text =sNote ;
li.SubItems.Add (sNote);
li.ImageIndex=iIcon; lvwMsg.Items.Add(li); lvwMsg.EndUpdate();
} catch {} }
private void ReadUdp() //从UDP数据端口读取GPRS数据
{ byte[] buff = new byte[1024];
int recv = 0; byte[] Tbuff;
byte[] AllBuff; int iLenght=0;
int iIndex=0; int iLen=0; int iXorValue=0; string CarIpAddress=""; byte[] RecvAffirmBuff=new byte[]{0x29,0x29,0x21,0x00,0x05,0,0,0,0,0x0D}
;//回应终端数组
IPEndPoint ipep = new IPEndPoint(IPAddress.Any ,LocaPort); //
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
try { socket.Bind(ipep); ShowSysMsg("系统成功在"+LocaPort + "端口侦听!",6);
} catch { ShowSysMsg("端口"+LocaPort+"已被占用,系统侦听失败!",5); return;
} IPEndPoint sender = new IPEndPoint(IPAddress.Any , 0)
;//指远程终端(终节点)Ip地址对象 IPAddress.Any表示任何地址 0 表示任何端口
EndPoint remote = (EndPoint)(sender); //指远程终端(终节点)
while(true)
{ try
{ recv = socket.ReceiveFrom(buff , ref remote);
} catch { ShowSysMsg("接收车载终端数据错误!",3);
}
//---------------------you2004-12-31 begin------------------------------//
AllBuff=new byte[recv +TempBuff.Length]; for (iIndex = 1; iIndex <=TempBuff.Length; iIndex++) { AllBuff[iIndex-1]=TempBuff[iIndex-1]; }
for (iIndex = 1; iIndex <=recv; iIndex++) { AllBuff[TempBuff.Length+iIndex-1]=buff[iIndex-1]; }
for (iIndex = 1; iIndex <=AllBuff.Length; iIndex++) { iLenght=AllBuff.Length-iIndex+1;
if (iLenght<6)
//检测数据包长度
{ //不完整,则将指令保存
if (iLenght>0)
{ TempBuff=new byte[iLenght];
for (iLen = 1; iLen <=iLenght; iLen++)
{ TempBuff[iLen-1]=AllBuff[iLen+iIndex-2];
}
}
break;
} else { //检测当前指令是否是完整的指令,查找数据包头
if (AllBuff[iIndex-1]==0x29 & AllBuff[iIndex]==0x29)
{ if ((AllBuff.Length -iIndex)>=(AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+4)) {
//检测当前指令是否是完整的指令
if ((AllBuff[AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+iIndex+3])==0x0D)
{ //在接收的数据中获取单条完整的指令数据
Tbuff=new byte[AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+5];
for (iLen = 1; iLen <=Tbuff.Length; iLen++)
{ Tbuff[iLen-1]=AllBuff[iLen+iIndex-2];
}

iXorValue=Get_CheckXor(ref Tbuff,Tbuff.Length-2);
if(iXorValue!=Tbuff[Tbuff.Length-2])
{ //校验不合格,继续查找合法指令数据
continue;
} else { if (bTsFlag)
{ string BuffToStr=""; for(int i=0;i<Tbuff.Length;i++)
{ BuffToStr+=Tbuff[i].ToString("X2")+" "; } ShowSysMsg(BuffToStr,0); }
//获取车载终端手机号
CarIpAddress=Tbuff[5]+"." +Tbuff[6] +"."+Tbuff[7] +"."+Tbuff[8];
//-----------------检测系统哈希表是否包含此终端数据---------------------\\
if(CarID_RemoteIP_Hash.ContainsKey(CarIpAddress))
{
CarID_RemoteIP_Hash[CarIpAddress]=remote;//有更新
}
else
{ CarID_RemoteIP_Hash.Add(CarIpAddress,remote);//没有添加
} //--------------------将数据转发到中心处理程序-----------------\\
if (TcpSocket.Connected)
{
try
{
TcpSocket.Send(Tbuff,0,Tbuff.Length,SocketFlags.None);
if (bTsFlag)
{
ShowSysMsg("数据成功转发到网络中心处理程序!",1);
}
}
catch
{
if (bTsFlag)
{ ShowSysMsg("数据转发到网络中心处理程序失败!",3);
}
}
} //-------------------向终端发出0x21的接收确认-------------------\\
RecvAffirmBuff[5]=Tbuff[Tbuff.Length-2]; RecvAffirmBuff[6]=Tbuff[2]; RecvAffirmBuff[7]=Tbuff[9]; RecvAffirmBuff[8]=Get_CheckXor(ref RecvAffirmBuff,8);
socket.SendTo(RecvAffirmBuff,remote); iIndex=iIndex+Tbuff.Length-1; TempBuff=new byte[1];
}
}
else { continue;
}
} else
{
if ((AllBuff[iIndex+2]*256+ AllBuff[iIndex+3]+4)>1024)
{ continue;
}
else
{ //不完整,则将指令保存
if (iLenght>0)
{ TempBuff=new byte[iLenght]; for (iLen = 1; iLen <=iLenght; iLen++)
{
TempBuff[iLen-1]=AllBuff[iLen+iIndex-2];
}
break;
}
else
{ TempBuff=new byte[1]; break;
}
}
}
}
else
{
continue;
}
}//检测数据包长度
} //---------------------you2004-12-31 end------------------------------//
}
}
private void GprsServer_Load(object sender, System.EventArgs e)
{ //
}
int I=0;
private void TimerIcon_Tick(object sender, System.EventArgs e)
{
if(thGprs!=null)
{ if(thGprs.IsAlive) notifyIcon.Icon=notifyIcon.Icon==m_Icon1?m_Icon2:m_Icon1;
else notifyIcon.Icon=notifyIcon.Icon==m_Icon1?m_Icon3:m_Icon1;
} I++; if(I>5) { I=FindWindow(null,@sCompanyName);
if( I!= 0)
{ SendMessage(I,0x501,1002,"");
} I=0; }
}
private void TimerConn_Tick(object sender, System.EventArgs e)
{
if (!TcpSocket.Connected)
{ try
{
lblInfo.Text ="与中心数据处理程序断开,正在进行二次连接...";
IPHostEntry IPHost = Dns.Resolve(RemoteIp);
string []aliases = IPHost.Aliases;
IPAddress []addr = IPHost.AddressList;
EndPoint ep = new IPEndPoint(addr[0],RemotePort);
TcpSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
TcpSocket.Connect(ep);
thTcpMsg = new Thread ( new ThreadStart(ReadTcpMsg)) ; //启动线程
thTcpMsg.IsBackground =true; thTcpMsg.Start( ) ;
lblInfo.Text ="系统运行正常,正在中转GPRS数据...";
}
catch
{
return;
}
}
}
private void checkBox1_CheckedChanged(object sender, System.EventArgs e)
{
bTsFlag=checkBox1.Checked;
}
private void cmdExit_Click(object sender, System.EventArgs e)
{
if(MessageBox.Show("确定关闭中继服务器?", "提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information) == DialogResult.Yes)
{ Application.Exit ();
}
}
private void cmdSet_Click(object sender, System.EventArgs e)
{
//frmUdpSet frmudpset=new frmUdpSet();
//frmudpset.Show();
}


protected override void OnClosing(CancelEventArgs e)
{ e.Cancel =true;
this.WindowState =FormWindowState.Minimized;
}
}
}

分享到:
评论

相关推荐

    华为经典教材GPRS原理

    ### GPRS原理与技术知识点详解 #### 一、GPRS概述 **1.1 GPRS的产生** GPRS(General Packet Radio Service,通用分组无线服务技术)是介于第二代移动电话系统(如GSM)与第三代移动电话系统之间的一种过渡技术。...

    GPRS基本原理!!!

    ### GPRS基本原理详解 #### 一、GPRS概述 **1.1 GPRS的产生** GPRS(General Packet Radio Service)即通用分组无线服务技术,是在GSM(Global System for Mobile communications)基础上发展起来的数据传输技术...

    GPRS系统原理(上篇)

    ### GPRS系统原理知识点 #### 一、GPRS系统简介 **GPRS**(General Packet Radio Service,通用分组无线服务技术)是一种基于GSM标准的数据通信技术,它为移动用户提供了一种快速、高效的分组数据服务。GPRS通过在...

    gprs有用的代码传输和接受数据

    根据给定文件的信息,我们可以提炼出关于GPRS代码在uCLinux系统中传输与接收数据的相关知识点。 ### GPRS在uCLinux中的实现 #### 5.6 uCLinux文件系统 uCLinux是一种适用于嵌入式系统的轻量级Linux发行版。文件...

    GPRS模块与PLC连接方法

    ### GPRS模块与PLC连接方法详解 在工业自动化领域,远程数据采集和监控系统(SCADA)的应用日益广泛,而GPRS作为一种低成本且灵活的数据传输方式,成为了连接偏远地区或移动设备的理想选择。本文将深入探讨如何实现...

    51单片机C语言实现GPRS通信

    在本文中,我们将深入探讨如何使用C51语言在51单片机上实现GPRS通信,同时结合其他重要的通信协议和技术,如IIC、485通信以及AD采集等。51单片机因其简单易用和成本效益高而广泛应用于各种嵌入式系统中。GPRS(通用...

    GPRS RTU 和 GPRS DTU

    GPRS RTU具备数据/图像采集、现场设备控制、监测数据存储、无线远程通信、智能分析预警等功能,唐山平升GPRS RTU可轻松实现物物相联或人机互动,并具备数据存储、对比、分析和处理功能,是组成成套系统的现场核心...

    GPRS资源资料文件

    从给定的文件信息中,我们可以提炼出关于GPRS(通用无线分组业务)资源资料文件的关键知识点,尤其是关于GPRS DTU(数据终端单元)的设计与研究,以及其在工业GPRS监控系统中的应用。 ### GPRS简介 GPRS是一种基于...

    GPRS系统介绍 及 GPRS规范

    **GPRS系统介绍** GPRS,全称是General Packet Radio Service,中文名为通用分组无线服务,是第二代(2G)移动通信网络中的数据传输技术。它在GSM(Global System for Mobile Communications)系统的基础上增加了对...

    GPRS基本原理,GPRS入门

    GPRS 基本原理和 GPRS 入门 GPRS(General Packet Radio Service,通用分组无线业务)是一种无线分组数据业务,旨在提供高速、可靠的数据传输服务。下面是 GPRS 基本原理和 GPRS 入门的知识点: 一、GPRS 概述 ...

    GPRS.rar_GPRS VC_GPRS开发_gprs 服务_gprs 服务器_sim900A

    GPRS(General Packet Radio Service)是一种移动通信技术,属于2G网络中的数据传输标准,它提供了比传统GSM更高的数据速率,使得用户可以更快速地进行互联网接入和数据交换。在本文中,我们将深入探讨如何利用GPRS...

    GPRS基础教程 GPRS入门专业书籍

    ### GPRS基础教程知识点详解 #### 一、GPRS简介 **GPRS**(General Packet Radio Service,通用分组无线服务)是一种基于全球移动通信系统(GSM)的数据传输技术,被视为GSM的一种延伸和发展。它打破了传统GSM网络仅...

    GPRS 并向服务器发送信息的实验

    在本文中,我们将深入探讨如何使用C#编程语言通过GPRS(通用分组无线服务)技术向服务器发送信息。GPRS是一种移动通信技术,允许设备通过蜂窝网络进行连续的数据传输,是2G网络中的重要组成部分,为移动互联网提供...

    GPRS基本原理学习

    GPRS(General Packet Radio Service,通用分组无线业务)是一种基于现有的GSM(Global System for Mobile Communications,全球移动通信系统)系统来提供数据服务的技术。它支持高速数据传输,通常用于传输互联网...

    GPRS通用通信系统的服务器端软件开发

    【GPRS通用通信系统服务器端软件开发】 GPRS(General Packet Radio Service)通用通信系统是一种基于GSM网络的分组交换技术,它允许设备通过移动网络进行数据传输。在这个系统中,服务器端软件扮演着核心角色,...

    基于SIM900A的GPRS开发程序,是一个完整的程序

    SIM900A是一款广泛应用在嵌入式系统中的GSM/GPRS模块,由中国的SiMCom公司生产。这款模块能够支持语音通话、短信收发以及数据传输,特别适合需要通过GPRS网络进行远程通信的应用场景。GPRS(General Packet Radio ...

    通过GPRS获得准确的网络时间

    ### 通过GPRS获得准确的网络时间的知识点详解 #### GPRS与网络时间同步 **GPRS(General Packet Radio Service)**,即通用分组无线服务技术,是一种基于GSM移动通信系统的数据承载业务,提供了端到端的、始终在线...

    STM32基于GPRS以mqtt协议与onenet通信

    在这个项目中,它被用来通过GPRS网络实现与物联网平台OneNet的通信,利用MQTT(Message Queuing Telemetry Transport)协议发送实时传感器数据。 MQTT是一种轻量级、发布/订阅模式的网络协议,特别适合资源有限的...

    gprs基本原理GPRS基本概念问答

    ### GPRS基本原理与概念详解 #### 一、GPRS与GSM的根本区别 GPRS(General Packet Radio Service,通用分组无线服务)与GSM(Global System for Mobile communications,全球移动通信系统)的主要区别在于它们的...

Global site tag (gtag.js) - Google Analytics