公交车管理系统上位机设计_第1页
公交车管理系统上位机设计_第2页
公交车管理系统上位机设计_第3页
公交车管理系统上位机设计_第4页
公交车管理系统上位机设计_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要本文介绍了公交车管理系统上位机硬件和软件的设计。该系统利用 GSM 收发模块、 GSM 通信网络、Visual Basic 语言编程和微控制技术,通过串口 RS-232C 与上位机通信并建立 GSM 通信网络的数据通道,以短消息作为数据传输方式,开发出基于 GSM-SMS 的控制系统。采用上位机较为友好的人机界面,用集成化的管理理念,对信息屏 终端通过 GSM 模块进行远程管理,具有费用低廉,不受距离远近和地势起伏的限制,方便可靠,灵活快捷的特点,且用 VB 语言编程具有较友好的用户操作界面,易学易用。 关键词: GSM 模块, RS-232C, SMSThe Design of the Bus Stop System Automatically Reports PCAbstractThis article introduces the design of the management system bus PC hardware and software.The system uses GSM transceiver, GSM communication network, Visual Basic programming language and micro-control technology, through the serial RS-232 communication with the host computer and the establishment of the GSM communication network data path to the short message as a data transfer method, developed based on GSM -SMS control system. PC using a more friendly interface, with integrated management of information through the GSM module screen terminal remote management, with a low-cost, distance and terrain from the ups and downs of the restrictions, convenient and reliable, flexible and efficient characteristics, VB programming language and with a more user-friendly interface, easy to learn and use.Key words: GSM Modem, RS-232C, SMS目 录1 引言 .11.1 公交车自动报站系统上位机的发展现状 .11.2 GSM 系统 .22 设计要求 .23 方案论证 .33.1 无线传输方案选择 .33.2 编程语言方案选择 .43.3 NMEA 协议 .44 系统结构及工作原理 .54.2 GSM 模块 .64.3 RS-232C 串口通信 .74.4 AT 命令集 .84.5 确认站点 .94.6 PDU 模式及中文短信息的编码 .105 上位机管理系统设计 .125.1 Visual Basic 简介 .135.2 数据库结构设计 .135.2.1 系统需求分析 .135.2.2 基本信息管理模块 .145.2.3 用户管理及权限控制功能集合 .146 上位机数据处理部分 .156. 1 MSCOMM 通讯控件的使用 .156.2 上位机软件设计 .186.2.1 数据通讯部分程序设计 .186.2.2 PC 机与 GSM 通信 .186.2.3 数据管理部分程序设计 .207 小结 .20致谢 .20参考文献 .22附录一 位置坐标 .23附录二 程序清单 .2311 引言公交车已经成为一般工薪族和学生族出门必须的交通工具,目前公交车上采用的公交报站系统具有语音和显示报站的基本功能,但由于报站时采用司机手动切换,一方面增加了司机的劳动强度,另一方面由于司机的误报或漏报,造成乘客误下或漏下,对于公交运营产生了很大负面影响,更会对乘客造成很多不必要的影响。作为一个城市的公交企业,既要代表政府体现当地城市的形象,又要尽一切力量减少政府投资, 创造良好的社会效益和经济效益。而传统的公交运营系统的装备和管理模式较难达到这两者的完美结合。随着科学技术的发展,公交应用系统带给公交企业的将不仅是形象的提升,也是效益的增长。为此,研究公交车自动报站系统是非常必要的。公交车自动报站系统是采用全球定位系统(GPS )进 行数据采集,实时解算车辆当时的经度、纬度等信息 ,获得公交车的实时坐标,将其发送到上位机与站牌坐标相比较,公交车驶入站牌一定距离范围内时,不用人工干预,系统自动进行控制下位机站牌,提供站牌温磬提示服务。在这个高速发展的社会中,信息技术、通信技 术、电 子控制技术、系统综合技术等的快速发展,使得各个 电子系统不断向智能化、人性化、多元化、节能化方向发展,智能化的交通运 输系统也已加入了这个高度发达的科技时代潮流。自动报站系统的建立不仅大大提高运输的效率、改善了交通环境,并且也提高了交通的安全性。公交车自动报站系统上位机设计是通过关键基础理论模型的研究,从而将信息技术、通信技术、电子控制技术和系统综合技术 等有效地应用于交通运输系统,从而建立起大范围内发挥 作用的实时、准确、高效的交通运 输管理系统。自动报站系统利用现代科学技术在人、车、路之 间建立起智能的联系。借助系 统的智能,车辆 可以在道路上安全、高效的行 驶,依靠智能化手段将车辆运行行程调整到最佳,在极大地提高运输效率的同时,充分保障交通安全、提高能源利用率,最终实现人、车、路的和谐统一 1。本品用以 Visual Basic 汇编语 言为基础编写发送界面的软件的上位机(PC 机),实现从 GSM 模块提取由公交车发送的位置信息,进行处理后再由 GSM模块发送到站牌下位机(单片机),并由下位机所控制的 LED 点阵显示屏显示出来。1.1 公交车自动报站系统上位机的发展现状目前国内各大城市常见公交车自动报站信息发布系统的搭建和信息内容的更新方式,多采用传统技术 手段,每个 报站系统只是一个孤立的单体,内容需要2专门人员,即便通过计算机控制,实际上也只是一个孤立的系统,无 论是信息录入、终端管理还是自动糊程度都很低,部署和使用成本也非常高,更别说网络化的信息传输和信息服务了。本系统通过上位机较为友好的人机界面,采用集成化的管理理念,对信息屏终端通过 GSM 模块进行远程管理,具有费用低廉,不受距离远近和地势起伏的限制,方便可靠,灵活快捷的特点,非常适合站牌信息发布系统。GSM 网络主要提供语音、短消息、数据等多种业务。其 SMS 短消息通讯方式采用通常的无线 GSM 短消息模块就能实现短消息的传输。SMS 以其连接简单,频谱利用率高、费用低廉、覆盖面广、保密性好、抗干扰能力强、实现方便等优点,得到广泛的应用。因此站牌信息发布系统上位机和控制终端之间可以通过SMS 基于 GSM 公共网进行数据和相关的命令传送,从而实现了远程信息的发布和管理。1.2 GSM 系统在很多监控领域,各种监控设备大多还是有线方式传输,当距离遥远时,有线方式监控设备的安装、维护 非常不方便,因 为监控端 远离采集端, 铺设电缆的投入是巨大的。通过无线方式来交换数据, 则可以有效地避免这些问题。GSM(Global System for Mobile Communication,全球移动通讯系统)网络是目前国内覆盖最广,应用最普遍的无线通信网络,利用 GSM 网络构建远程检测系统时,完全可以利用现成的 GSM 无线网络而无须再建新基站。 GSM是基于 时分多址技 术的移动通讯系统,是目前发展比较成熟、完善、应用最为广泛的通讯系统。目前已建成的覆盖全国的GSM数字蜂窝移动通讯网(主要包括中国移动和中国联通两家大型运营商),是我国公众移动通讯网的主要方式,它主要提供话音、短信息、数据等多种 业务。其中基于GSM-SMS (Short Message System,短消息或短信)功能可以开发出传输 各种检测、监控数据信号和控制命令的数据通讯系统 2。由于GSM 网络在全球范围内实现了联网和漫游,不需组建专用通讯网络,就可以完成远程数据通讯,而且具有较好的实时性,所以GSM网 络的应 用越来越广泛。利用GSM 网络 短消息业务 (SMS)实现监测领域的应用具有以下优点:通信网络覆盖面广,网络设施完备 ,实施与运行费用低,可以实现在无人值守情况、环境恶劣、超远距离的情况下控制信息的收集和传送。2 设计要求系统的具体设计要求为:(1)人机界面友好:方便用户进行常用的管理操作。(2)运行稳定:采用最新技术保证系统能准确的进行数据的发送与接收。3(3)历史记录管理:能对历史记录进行再现,方便汇总。(4)安全保密:系统可设置登录权限,对信息进行访问控制。(5)数据恢复:可以将数据记录进行存档,在遇到灾难性故障时不至于数据丢失。基于以上的要求,所设计的系统必须有以下结构模块:GSM 收发模块、数据库管理模块、串口通讯模块 、系 统运行平台。3 方案论证3.1 无线传输方案选择目前的无线通道的数据传输方案主要分为两种,一种是通过专用网进行数据传输,如 RF(Radio Frequency,射频)数据传输电台和无线局域网(WLAN);一种是通过公共无线通信网络,如GSM/GPRS 网络的成熟度 较高、覆盖面 较广,因而GSM/GPRS网络被选为该 无线通道总体方案的通信基础。而基于GSM/GPRS 网络的数据传输通常有四种方式,一种是基于短消息的数据传输。第二种是基于DATA方式(注:一种以电路交换为基础的传输方式)的数据传输;第三种是通过语音方式进行数据传输;最后就是通过IP(INTERNET PROTOCOL,因特网协议)方式的数据传输。下面对四种基于GSM/GPRS 网络 的无线数据传输方式的各自特点作简单的介绍。基于短消息的数据传输是通过短消息作为数据传输的载体,利用AT指令 对通信模块控制,然后将数据按照短消息的格式发送给目标机。目标机接收到短消息后,利用AT 指令将短消息读出并将信息还原,这样就完成一次数据通信。基于短消息的数据传输方式的特点是资费较低,组网/使用方面,但数据容量较低(0YYNN开 始GSM 模 块初始化打 开 串 口与 GSM 通信建立成功?接收提取信息是否有效?访问数据库提 取 车 号提取站牌坐标500 ThenMe.Caption = PickAllSMS1(strReceived, obj_ArySMSList)ElseMe.Caption = PickAllSMS(strReceived, obj_ArySMSList)End IfOn Error Resume NextnU = UBound(obj_ArySMSList)If nU 0 ThenFor n = 1 To nUIf lenpc 0 ThenSMSNo.Text = obj_ArySMSList(n).SourceNoSMSTime.Text = Format(obj_ArySMSList(n).ReachDate, YYYY-MM-DD) & & Format(obj_ArySMSList(n).ReachTime, HH:MM:SS) & vbCrLfSMSText.Text = obj_ArySMSList(n).SmsMainEnd IfNext nEnd IfEnd SubPrivate Sub Timer1_Timer()Timer1.Enabled = ScanTaskAEnd SubPrivate Function ScanTaskA() As BooleanDim nTmp As LongDim i_ScanPtr As Integer26Dim ary_nCommandFlag(0 To 31) As LongFor i = 0 To 15ary_nCommandFlag(i) = 2 (15 - i)Next iOn Error Resume NextContinueScan:= 取出命令标志数组 =nTmp = ary_nCommandFlag(i_ScanPtr)= 察看标志是否等于1 =If (n_TaskWord And nTmp) 0 Then- 如果有任 务存在, 则准备执行之,任务执行的条件是串口打开,而且没有正在进行的接收任务 -If MSComm1.PortOpen = True Then- 将任 务命令下发 -MSComm1.Output = ary_strTask(i_ScanPtr)Else- 如果 执行的条件不满足, 则保留权利,等待下次会话 -ScanTaskA = TrueExit FunctionEnd If 如果程序能够执行到此处,说明该任务已 经完成那么将该任务的标志删除n_TaskWord = (n_TaskWord And (Not nTmp)因为一个会话只能执行一个任务,因此扫 描指针回零,退出当前会话,等待下次会话,重新扫描i_ScanPtr = 0ScanTaskA = TrueExit FunctionEnd If= 没有捕获任务,将扫描指针前移一个位置 =i_ScanPtr = i_ScanPtr + 1- 如果 扫描了整个 队列也没有发现任务 -27If i_ScanPtr = 16 Then- 结束扫描,等待外部触发 -i_ScanPtr = 0ScanTaskA = FalseElse- 否则的话 ,继续扫描 -GoTo ContinueScanEnd IfEnd Function退出程序,关 闭串口Private Sub Cmdquit_Click()Unload MeEnd SubPrivate Sub Form_Unload(Cancel As Integer)MSComm1.PortOpen = FalseEnd Sub*串口通信模块程序*Option ExplicitPublic g_blIsListSMS As BooleanPublic g_blIsSysBusy As BooleanPublic g_blIsWaiting As BooleanPublic g_blIsNewSMSIn As BooleanPublic g_blIsSendingSMS As BooleanPublic g_blIsHexCommData As BooleanPublic g_blMaySaveAllSMS As BooleanPublic g_blwav As BooleanPublic g_strSave As StringPublic g_strThisAT As StringPublic g_strLastAT As StringPublic g_strLatestAT As StringPublic n_CountListSMS As LongPublic g_SysInfo As SysStructPublic TheForm As FormPublic TheMenu As MenuPublic Declare Sub Sleep Lib kernel32 (ByVal dwMilliseconds As Long) VB延时API函数Public Declare Sub winhelp Lib user32 (ByVal hWnd As Long, ByVal lphelpfile As String, ByVal wcommand As Long, ByVal dwData As Long) 调用帮助API函数28Public Declare Function htmlHelp Lib hhctrl.ocx Alias HtmlHelpA (ByVal hwndCaller As Long, ByVal pszFile As String, ByVal uCommand As Long, ByVal dwData As Long) As LongPublic Const HH_DISPLAY_INDEX = 2Public Const HH_DISPLAY_TOC = 1Public Const HH_DISPLAY_TOPIC = 0Type SysStructCommPort As IntegerBaud As StringServiceNo As StringDestNo As StringSMSMelody As IntegerClock As BooleanClockSet As StringEnd TypeType SMSDefListOrRead As Boolean 是否用列举(List)方法读取SmsIndex As LongSourceNo As StringReachDate As StringReachTime As StringSmsMain As StringEnd Type功能:解析串口中AT 命令返回的信息输入参数: 串口数据输出参数:strATData: 短消息内容 (UD)iSMSIdx: 短消息序号strSMSTime: 短消息接收时间strSMSSourceNO:源SIM 卡号strSMSStatus: 短消息状 态:READ已读,UNREAD 未读,SENT发送,UNSENT未发送Public Function GetDataFromCommPort(ByVal strInput As String, strATData As String, Optional CommandStatus As String, Optional TimedOut As Boolean, Optional iSMSIdx As Integer, Optional strSMSTime As String, Optional strSMSSourceNO As String, Optional strSMSStatus As String) As Boolean29On Error GoTo ErrorGDim strTmp As String, strTmp1 As StringDim i As Integer, iTmp1 As Integer, iTmp2 As IntegerDim iLen As IntegerDim blHasError As BooleanDim blIfInprogress As BooleanStatic iCountMonitor As IntegerstrTmp = For i = 1 To Len(strInput)strTmp1 = Mid(strInput, i, 1)If strTmp1 vbLf Then strTmp = strTmp & strTmp1Next ig_strSave = g_strSave & strTmp AT+CMGR=1 & vbCrLf & +CMGR: RECIf InStr(strTmp, vbCr) 0 Then And (InStr(strTmp, OK) 0 Or InStr(strTmp, ERROR) 0) Theng_blIsWaiting = FalseiCountMonitor = 0End IfiCountMonitor = iCountMonitor + 11、看是否是AT命令或者其响应 a. 如果是AT开头 或者有A/且A/之后是回车换行,则表示ATE1 b. 如果不是以上或者以以上字符串开头,回车换行之后以+开头,或者OK 、ERROR 则表示是AT 命令的响 应。 另外,还有一种可能是以上所述字符串出 现在半道, 那么,在这种情况下需要查找符合条件的字符串,从中截取出响 应字符串 在这里,如果命令一 时没有全部返回,因为串口数据不一定会得到全部数据 所以,设置一个静态的Bool变量blIsWaiting,来指示是否 结束了本条AT响应单元ProcessNextData:DoIf Left(g_strSave, 1) = vbCr Theng_strSave = Right(g_strSave, Len(g_strSave) - 1)30ElseExit DoEnd IfLoopIf Not g_blIsWaiting ThenIf g_strThisAT = Theng_blIsWaiting = TrueIf UCase(Left(g_strSave, 3) = A/ & vbCr ThenCommandStatus = 重复上次指令g_strSave = Right(g_strSave, Len(g_strSave) - 3)g_strThisAT = g_blIsWaiting = FalseElseIf UCase(Left(g_strSave, 2) = AT Then 命令的回显iLen = InStr(g_strSave, vbCr) 查找命令输入结束符号回车If iLen 0 Theng_strLastAT = Left(g_strSave, iLen) 保存回显的命令,作为指示的依据。g_strSave = Right(g_strSave, Len(g_strSave) - iLen) 只保留命令的执行部分g_strThisAT = IsEchoElseg_blIsWaiting = TrueEnd IfElseIf UCase(Left(g_strSave, 2) AT Then 如果开头字符不是AT+,那么需要搜索一下;iTmp1 = InStr(g_strSave, +) 首先查找AT指令响应标志+If iTmp1 0 Then 如果找到了+iTmp2 = InStr(g_strSave, :) 查找响应结束符标志:If iTmp2 0 And iTmp2 iTmp1 Then 根据起始符+,用以确定最近返回的是哪一个指令g_strThisAT = Mid(g_strSave, iTmp1, iTmp2 - iTmp1 + 1)31g_strSave = Right(g_strSave, Len(g_strSave) - iTmp1 + 1)blHasError = FalseElse假如没有找到成对出现或者任何一个都没有的返回值,那么要等待后面的内容If Len(g_strSave) - iTmp1 15 ThenblHasError = TrueElseblHasError = Falseg_blIsWaiting = TrueEnd IfEnd IfElseIf InStr(g_strSave, OK) 0 Then 是OK吗?g_strThisAT = OKElseIf InStr(g_strSave, ERROR) 0 Then 不是OK,是ERROR吗?g_strThisAT = ERROR 但属于非正常操作ElseIf InStr(g_strSave, RING) 0 Theng_strThisAT = RINGElseiLen = InStr(g_strSave, vbCr)If iLen 0 Theng_strSave = Right(g_strSave, Len(g_strSave) - iLen)g_strThisAT = blHasError = FalseElseblHasError = TrueEnd IfEnd IfEnd IfIf blHasError Theng_strSave = g_strThisAT = g_blIsWaiting = TrueEnd IfEnd If32End IfIf g_strThisAT Then g_blIsWaiting = Not AnalysisData(g_strSave, g_strThisAT, blIfInprogress, CommandStatus)End IfIf TimedOut = True ThenTimedOut = FalseEnd IfTimedOut = g_blIsWaitingIf g_strSave And g_strSave vbCr ThenIf g_strThisAT = TheniCountMonitor = iCountMonitor + 1If Not g_blIsWaiting Then GoTo ProcessNextDataEnd IfElseIf g_strSave = vbCr Or g_strSave = Theng_strSave = g_blIsWaiting = Falseg_strThisAT = g_strLastAT = End IfstrATData = g_strSaveGetDataFromCommPort = TrueExit FunctionErrorG:CommandStatus = 获取串口数据: & Err.DescriptionEnd FunctionPublic Function PickAllSMS(ByRef InputString As String, RetSMS() As SMSDef) As StringDim i As Integer, iTmp As Integer, iLen As Integer, iNext As Integer, iCr As IntegerDim n As LongDim strTmp As String, strTmp1 As String, strTmp2 As StringDim btTmp() As Byte, btTmp2() As ByteDim blRet As BooleanOn Error Resume NextstrTmp = btTmp = InputString= 将短消息中的双引号去除 =iTmp = 0For i = 0 To UBound(btTmp)strTmp1 = Chr(btTmp(i)If strTmp1 And btTmp(i) 0 And strTmp1 vbLf ThenReDim Preserve btTmp2(0 To iTmp + 1)btTmp2(iTmp) = btTmp(i)33btTmp2(iTmp + 1) = 0iTmp = iTmp + 2End IfNext iInputString = btTmp2n = 0i = 1DoiTmp = InStr(i, InputString, +CMGL:)iCr = InStr(iTmp, InputString, vbCr)If iTmp 0 ThenIf iCr - iTmp + 1 0 Then n = n + 1ElseIf iTmp = 0 ThenExit DoEnd Ifi = iTmp + 7LoopIf n 0 ThenReDim RetSMS(1 To n)ElseReDim RetSMS(0 To 0)End If= 逐条保存到数据 库中 =For i = 1 To niTmp = InStr(InputString, +CMGL:)iCr = InStr(InputString, vbCr)If iCr 0 And iTmp 0 ThenInputString = Right(InputString, Len(InputString) - iTmp + 1)iTmp = InStr(InputString, +CMGL:)iNext = InStr(iTmp + 7, InputString, +CMGL:)If iNext 0 ThenstrTmp = Mid(InputString, iTmp, iNext - iTmp)InputString = Right(InputString, Len(InputString) - iNext + 1)ElseiCr = InStr(iTmp, InputString, vbCr)iCr = InStr(iCr + 1, InputString, vbCr)strTmp = Mid(InputString, iTmp, iCr - iTmp)InputString = Right(InputString, Len(InputString) - iCr + 1)End IfblRet = PickOneSMS(strTmp, RetSMS(i), True)If blRet ThenOn Error GoTo ErrorNode34ErrorNode:End IfEnd IfNext iPickAllSMS = 共有 & n & 条短信End FunctionPublic Function PickAllSMS1(ByRef InputString As String, RetSMS() As SMSDef) As StringDim i As Integer, iTmp As Integer, iLen As Integer, iNext As Integer, iCr As IntegerDim n As LongDim strTmp As String, strTmp1 As String, strTmp2 As StringDim btTmp() As Byte, btTmp2() As ByteDim blRet As BooleanOn Error Resume NextstrTmp = btTmp = InputString= 将短消息中的双引号去除 =iTmp = 0For i = 0 To UBound(btTmp)strTmp1 = Chr(btTmp(i)If strTmp1 And btTmp(i) 0 And strTmp1 vbLf ThenReDim Preserve btTmp2(0 To iTmp + 1)btTmp2(iTmp) = btTmp(i)btTmp2(iTmp + 1) = 0iTmp = iTmp + 2End IfNext iInputString = btTmp2n = 0i = 1DoiTmp = InStr(i, InputString, +CMGR:)iCr = InStr(iTmp, InputString, vbCr)If iTmp 0 ThenIf iCr - iTmp + 1 0 Then n = n + 1ElseIf iTmp = 0 ThenExit DoEnd Ifi = iTmp + 7LoopIf n 0 ThenReDim RetSMS(1 To n)35ElseReDim RetSMS(0 To 0)End If= 逐条保存到数据 库中 =For i = 1 To niTmp = InStr(InputString, +CMGR:)iCr = InStr(InputString, vbCr)If iCr 0 And iTmp 0 ThenInputString = Right(InputString, Len(InputString) - iTmp + 1)iTmp = InStr(InputString, +CMGR:)iNext = InStr(iTmp + 7, InputString, +CMGR:)If iNext 0 ThenstrTmp = Mid(InputString, iTmp, iNext - iTmp)InputString = Right(InputString, Len(InputString) - iNext + 1)ElseiCr = InStr(iTmp, InputString, vbCr)iCr = InStr(iCr + 1, InputString, vbCr)strTmp = Mid(InputString, iTmp, iCr - iTmp)InputString = Right(InputString, Len(InputString) - iCr + 1)End IfblRet = PickOneSMS(strTmp, RetSMS(i), False)If blRet ThenOn Error GoTo ErrorNodeErrorNode:End IfEnd IfNext iEnd FunctionPublic Function PickOneSMS(strInputData As String, RetSMS As SMSDef, ByVal blIsList As Boolean) As BooleanDim blRetFunc As BooleanDim i As Integer, iLen As Integer, iCr As IntegerDim nD As Long, nRet As LongDim strTmp As String, strTmp1 As String, strTmp2 As String, strTmp3 As StringDim MyStr() As StringDim aryTmp() As StringOn Error GoTo ErrorSave= 取出短信息 头部 =iCr = InStr(strInputData, vbCr)iLen = Len(strInputData)If iCr 0 And iCr 0 ThenIf iCr 0 ThenstrTmp = Trim(Right(aryTmp(0), Len(aryTmp(0) - iLen)37If IsNumeric(strTmp) ThenRetSMS.SmsIndex = CLng(strTmp)End IfEnd IfRetSMS.ListOrRead = blIsList= 如果 对方的SIM 号码前面有+86,则剔除掉 =On Error Resume NextIf Left(MyStr(1), 3) = +86 ThenMyStr(1) = Right(MyStr(1), Len(MyStr(1) - 3)End If= 如果 时间中含有时区, 则去除 =iLen = InStr(MyStr(3), +)If iLen 0 Then MyStr(3) = Left(MyStr(3), iLen - 1)iLen = InStr(MyStr(3), -)If iLen 0 Then MyStr(3) = Left(MyStr(3), iLen - 1)= 取出短信中的用 户数据UD =iC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论