卡發(fā)java串口通信詳解_第1頁(yè)
卡發(fā)java串口通信詳解_第2頁(yè)
卡發(fā)java串口通信詳解_第3頁(yè)
卡發(fā)java串口通信詳解_第4頁(yè)
卡發(fā)java串口通信詳解_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

,就是軟件代碼隨便你用,就是文檔,例子和后期服務(wù)。這也難怪,畢竟就像某個(gè)著名NBA持開(kāi)源的人也要養(yǎng)家,收點(diǎn)錢(qián)也不過(guò)分。要想既不花錢(qián)又學(xué)到知識(shí)就只能借助網(wǎng)絡(luò)和了,雖然我的這個(gè)系列介紹的東西不是什么Web框架,也不是什么開(kāi)源服務(wù)器,但是我相信,PC機(jī)與嵌入式設(shè)備或傳感器節(jié)點(diǎn)USBJava類(lèi)庫(kù))。SUNCommAPI分別提供了RS232IEEE1284并行端口通訊的支持。RS-232-C(EIASUN的串口通信API在Windows到SUN的m20-win32.zip,包含的東西如下所示 .dll到<JDK>\bin 下;將comm.jar到 perties也同樣拷貝到<JDK>\lib 使用串口包的時(shí)候,僅作這些是不夠的。因?yàn)橥ǔ.?dāng)運(yùn)行“javaMyApp”的時(shí)候,是由JRE下的虛擬機(jī)啟動(dòng)MyApp的。而我們只上述文件到JDK相應(yīng) 找不到串口。解決這個(gè)問(wèn)題的方法很簡(jiǎn)單,我們只須將上面提到的文件放到JRE相應(yīng)的 API的時(shí)候,還會(huì)遇到其他更復(fù)雜問(wèn)題。有興趣的話(huà),你可以查看CSDN社區(qū)中“關(guān)于網(wǎng)頁(yè)上Applet用m20客戶(hù)端串口的API法對(duì)于所有不同的通訊端口來(lái)說(shuō)是通用的。SerialPortParallelPort都是它的子類(lèi),前者用SerialPort。 管理端口所有權(quán)變化的voidlistPortChoices()CommPortIdentifierEnumerationen=//i tethroughtheports.while(en.hasMoreElements()){portId=(CommPortIdentifier) if(portId.getPortType()==CommPortIdentifier.PORTSERIAL){}}}SerialPortsPort;try{sPort.setFlowControlMode(FlowControlIn|FlowControlOut);}catch mOperationExceptione)CommPortIdentifierportId=CommPortIdentifier.getPortIdentifier(PortName);try{時(shí)間

SerialPortsPortSerialPortportId.open("串口所有者名稱(chēng)",catchPortInUseExceptione)如果端口被占用就拋出這個(gè)異常thrownewSerialConnectionException(e.getMessage());}OutputStreamos=newBufferedOutputStream(sPort.getOutputStream());os.write(intdata);InputStreamis=newBufferedInputStream(sPort.getInputStream());intreceivedData=is.read(); 模式,一種是實(shí)現(xiàn)SerialPortEventListener接口,各種串口并作相應(yīng)處理;另一種問(wèn)題(J),所以我的實(shí)現(xiàn)是采用第三種方法來(lái)解決這個(gè)問(wèn)題。: trySerialPort}catch(TooManyListenerceptione){thrownewSerialConnectionException("toomanylisteners} 覆寫(xiě)publicvoidserialEvent(SerialPortEvente)方法,在其中對(duì)如下進(jìn)行判斷BI通訊中斷CD-載波檢測(cè).CTS清除發(fā)送DATA_AVAILABLE有數(shù)據(jù)到達(dá)DSR數(shù)據(jù)設(shè)備準(zhǔn)備好.FE-幀錯(cuò)誤.OE溢位錯(cuò)誤OUTPUT_BUFFER_EMPTY輸出緩沖區(qū)已清空.PE-奇偶校驗(yàn)錯(cuò).RI 一般最常用的就是DATA_AVAILABLE--串口有數(shù)據(jù)到達(dá)。也就是說(shuō)當(dāng)串口有數(shù)據(jù)到serialEvent中接收并處理所收到的數(shù)據(jù)。然而在我的實(shí)踐中,遇到了一個(gè)十(30字節(jié)左右(即持續(xù)時(shí)間314900也不清楚到底丟失的是那部分?jǐn)?shù)據(jù)。值得注意的是,這是我將serialEvent()中所有處理代碼都publicvoidstartReadingDataThread(){ThreadreadDataProcess=newThread(newRunnable(){publicvoidrun(){while(newData!=-1)trynewData=}catch(IOExceptionex){}}}這樣,我就解決了丟數(shù)據(jù)問(wèn)題。然而,沒(méi)高興多久我就又發(fā)現(xiàn)了一個(gè)同樣嚴(yán)重的問(wèn)題:雖然這回不再丟數(shù)據(jù)了,可是原本一個(gè)周期(31秒)之后,傳感器節(jié)電已經(jīng)停止傳送數(shù)據(jù)了,InputStream4900遠(yuǎn)遠(yuǎn)大于節(jié)點(diǎn)運(yùn)行周期。這一延遲對(duì)于一個(gè)實(shí)時(shí)的顯示系統(tǒng)來(lái)說(shuō)簡(jiǎn)直是!后來(lái),是不是由于兩個(gè)線(xiàn)程之間的同步和通信導(dǎo)致了數(shù)據(jù)接收緩慢呢?于是我在接收痛苦了許久(BossL)之后,偶然的機(jī)會(huì),我聽(tīng)說(shuō)TinyOS中(又是開(kāi)源的)有讀數(shù)據(jù)的方法來(lái)解決問(wèn)題(什么,為什么不把處理線(xiàn)程也一并取消?publicbyte[]getPack(){while(true){PacketLengthbyte[]msgPack=newbyte[PacketLength];for(inti=0;i<PacketLength;i++){if((newData=is.read())!=-1){msgPack[i]=(byte)newData;}}return}}最后加以解決。值得注意的是對(duì)于第法,我曾將傳感器發(fā)送的時(shí)間由128毫秒增加512毫秒,仍然有很?chē)?yán)重的數(shù)據(jù)丟失現(xiàn)象發(fā)生,所以如果你的應(yīng)用程序需要很精密的結(jié)java使用m20-win32由于這幾天要通過(guò)java調(diào)用通過(guò)串口或并口連接的硬件資源,所以我就要用到和底層的可以通過(guò)JNI來(lái)實(shí)現(xiàn)(見(jiàn)http://h 知道的知識(shí)由于java已經(jīng)提供我們一個(gè) m20-win32通用的API我們還是實(shí)行“拿 mTool.exe"的綠色軟件,進(jìn)試的。這軟件很適應(yīng),如果選中的某個(gè)COM已 mTool軟件一個(gè)一個(gè)的試,如果正常的話(huà),那么你可以看到有數(shù)據(jù)顯示在數(shù)據(jù)接收窗口。也許,有些主板的串口壞了,那么你就要買(mǎi)一個(gè)轉(zhuǎn)接卡,通過(guò)PCI插口轉(zhuǎn)=2400=8,停止位=2,校驗(yàn)位=1。。那么你要把相應(yīng)的m20-win32放到運(yùn)行時(shí)使用的JDK中m20-win32。了 你必須 .dll到j(luò)ava.home/bin下; java.home/libcomm.jarclassPath下。前面兩個(gè)都是非常重要的。

I/O些通訊端口是可用的并且選擇一個(gè)端口便于開(kāi)始。然后它使用方法在其它類(lèi)中 CommPort,ParallelPort和SerialPort通過(guò)這個(gè)端口進(jìn)行通訊??趍.SerialPortEventListener串行端口java

SerialPortsPort mDriverdriver=StringdriverName=" SerialPortsPort=(SerialPort) ort("COM4",ommPortIdentifier.PORT_SERIAL);javaCommPortIdentifierportId=SerialPortsPort=(SerialPort)portId.open("shipjavajavaInputStreamissPort.getInputStream();//從外OutputStreamos=java//SetnotifyOnDataAvailabletotruetoalloweventdriveninput. //SetnotifyOnBreakInterruptoalloweventdrivenbreakhandling. //Setreceivetimeouttoallowbreakingoutofpollingloopduringinputhandling. StringBufferlinkWgtnewStringBuffernewpublicvoidserialEvent(SerialPortEventintnewData=//Determinetypeofswitch(e.getEventType())//Readdatauntil-1isd.If\risreceived//\nforcorrectnewlinehancaseSerialPortEvent.DATA_while(newData!=-1)trynewData=;if(newData==-{ if('\r'==Data) }else }}catch(IOExceptionx)}}//Appendreceiveddata }catch(Exception}catch(Exception //IfbreakeventappendBREAKRECEIVEDmessage. case BREAKRECEIVED---\n"); m.NoSuchPortException這個(gè)說(shuō)明你 Modem的條串行線(xiàn)進(jìn)行兩臺(tái)電腦之間的數(shù)據(jù)共享。除了這些,,PDA,USB鼠標(biāo)、鍵盤(pán)等等都是以有有必要的,說(shuō)不定有哪位讀者還想用此技術(shù)寫(xiě)一個(gè)PDA與電腦之間數(shù)據(jù)共享的程序呢。RS-232-C(又稱(chēng)EIARS-232-C,以下簡(jiǎn)稱(chēng)RS232)是在1970年由電子工RS232是一個(gè)全雙工的通訊協(xié)議,它可以同時(shí)進(jìn)行數(shù)據(jù)接收和發(fā)送的工作。RS232的端口通常有兩種:9針(DB9)25針(DB25)。DB9和DB251823324576674859RS232設(shè)備的發(fā)送端(TXD)和接收端(RXD)及接(9針RS2322--3,3---2,5(7)---5(7)2是數(shù)據(jù)接收線(xiàn)(RXD),3是數(shù)據(jù)發(fā)送線(xiàn)(TXD),5(7)是接地(RND)PC,和一部NoteBookRS232設(shè)備連接起來(lái)。2--3,3--2,5(7)--5(7)RS232設(shè)備時(shí)并不奏效。232,3,5(7)針一一對(duì)應(yīng)就行了。搞電子的人手邊應(yīng)該常備一個(gè),用來(lái)測(cè)測(cè)電壓,電阻什么的會(huì)很有用。你3~15VTXD針腳。JavaCommunicationsjar包形式發(fā)布在 上(從這里) m.jar,稱(chēng)之為JavatmCommunicationsAPI,它是J2SE的標(biāo)準(zhǔn)擴(kuò)展。comm.jar并不是最近才有,早在1998年時(shí),sun就已經(jīng)發(fā)布了這個(gè)開(kāi)發(fā)包。comm.jar分別提供了對(duì)常用的RS232串行端口和兩個(gè)版本,如果你需要Linux平臺(tái)下的,可以在 comm.jarjavaRS232通訊者JDK,JRE(JavaRuntime你是用JDK來(lái)運(yùn)行程序的,請(qǐng)將相應(yīng)的改成。 perties。comm.jar提供了通訊用的javaAPI,而 供comm.jar調(diào)用的本地驅(qū)動(dòng)接口。而 perties是這個(gè)驅(qū)動(dòng)的類(lèi)配置文件。首先將comm.jar到\lib\ext .dll到你的RS232應(yīng)用程序運(yùn) perties到\lib RS232串口的設(shè)備,你可以將自己的電腦模擬成兩臺(tái)92,3,5CommAPICommAPICommAPI的類(lèi)結(jié)API用法。所有的commAPI位于 m包下面。從CommAPI的javadoc來(lái)看,它介紹給我們的只有區(qū)區(qū)以下13個(gè)類(lèi)或接口:m.ParallelPortEventListener(extendsjava.util.EventListener)m.SerialPortEventListener(extendsjava.util.EventListener)RS232端口:Enumerationen=CommPortIdentifier.getPortIdentifiers();CommPortIdentifierportId;while{portId=(CommPortIdentifier)en.nexif(portId.getPortType()=={}}CommPortIdentifiergetPortIdentifiersCommPortIdentifier類(lèi)的實(shí)例。CommPortserialPort=portId.open("MyApp",/*從端口中數(shù)據(jù)InputStreaminput=serialPort.getInputStream();/*往端口中寫(xiě)數(shù)據(jù)OutputStreamoutput=serialPort.getOutputStream();}catch(PortInUseException{...PortInUseException異常。在這里CommPortIdentifier類(lèi)和CommPort類(lèi)有什么區(qū)別呢?其實(shí)它們兩者是一一對(duì)應(yīng)的關(guān)系。CommPortIdentifier主要負(fù)責(zé)端口的初始化和開(kāi)啟,以及管理它們的占有權(quán)。而CommPort則是跟實(shí)際的輸入和輸出功能有關(guān)的。通過(guò)CommPort的getInputStream()可以取得端口的輸入流,它是java.io.InputStream接口的一個(gè)實(shí)例。我們可以用標(biāo)準(zhǔn)的InputStream的操作接口來(lái)流中的數(shù)據(jù)就像通過(guò)FileInput 相應(yīng)的,CommPort的getOutputStream可以獲得端口的輸出流,這樣就可以往串口輸出數(shù)用該端口時(shí)可能會(huì)拋出端口正在使用中的錯(cuò)誤。很奇怪的是,CommPortIdentifier類(lèi)只提供CommPort類(lèi)的close()方法。CommPort的輸入流的方式與文件的輸入流有些不一樣,那就是你可能不知這個(gè) m.jar提供了兩種靈活的方式讓GFOK了才算完。這個(gè)就叫輪詢(xún)(Polling)。GF說(shuō)“OK了!”,這個(gè)就是結(jié)束你輪詢(xún)的條件。在單線(xiàn)程的程序中,當(dāng)循環(huán)一直執(zhí)行doEventJava中,最好的方式是使用publicTestPortextend{InputStreaminput=serialPort.getInputStream();StringBufferbuf=newStringBuffer();booleanstopped=publicvoid{trywhile(!stopped)intch=input.read();if(ch=='q'||ch=='Q'{/*結(jié)束,關(guān)閉端口...*/stopped=true;}{}}catch(InterruptedExceptione){}}CommAPI支持標(biāo)準(zhǔn)的JavaBean型的模型。也就是說(shuō),你可以使用類(lèi)CommPortserialPort=portId.open("MyApp",從而取得SerialPort,再調(diào)用它的addEventListener方法為它添加器serialPort.addEventListener(new發(fā)生時(shí),將自動(dòng)調(diào)用器中的serialEvent方法。SerialEvent有以下幾種類(lèi)型:BI-通訊中斷.CD-載波檢測(cè).CTS-清除發(fā)送--FE-幀錯(cuò)誤OE-溢位錯(cuò)誤-RI-指示publicvoidMyPortListenerimplements{DATA_AVAILABLE,當(dāng)數(shù)據(jù)從外部設(shè)備傳送到端口上來(lái)時(shí)將觸發(fā)此。此時(shí)就可以使用前面提到過(guò)的方法,serialPort.getInputStream()來(lái)從InputStream中數(shù)據(jù)了。CommAPI的開(kāi)發(fā)包中取得完整的可運(yùn)行的演示程序。請(qǐng)先了commAPI的開(kāi)發(fā)包,解Sample的,里面有幾個(gè)演示程序,分別是:BlackBox:ASerialPortBlackBoxParallelBlackBox:AParallelPortBlackBoxSerialDemo:AsimplerSerialPortsampleSimple:AverysimplecommNullDriver:Atemtefordriverwriters.CanbeusedasthestartingpointtowriteadriverfortheCommAPI.porting:AtemteCommPortIdentifierjavafileforpeopleinterestedinportingtheCommAPItoanewtform.1),3),4)是關(guān)于rs232通訊的演示程序。而其它的,2)是并行端口的演示程序。5)和6)是開(kāi)發(fā)自己的端口驅(qū)動(dòng)程序的模板程序,有的讀者可以自行研究。publicvoidserialEvent(SerialPortEvent{switch{caseSerialPortEvent.CTS:System.out.println("CTSeventoccured.");caseSerialPortEvent.CDSystem.out.println("CDeventoccured.");caseSerialPortEvent.BISystem.out.println("BIeventoccured.");caseSerialPortEvent.DSR:System.out.println("DSReventoccured.");caseSerialPortEvent.FESystem.out.println("FEeventoccured.");caseSerialPortEvent.OESystem.out.println("OEeventoccured.");caseSerialPortEvent.PESystem.out.println("PEeventoccured.");caseSerialPortEvent.RISystem.out.println("RIeventoccured.");caseSerialPortEvent.OUTPUT_BUFFER_EMPTY:System.out.println("OUTPUT_BUFFER_EMPTYeventoccured.");caseSerialPortEvent.DATA_AVAILABLESystem.out.println("DATA_AVAILABLEeventoccured.");intch;StringBufferbuf=newStringBuffer();InputStreaminput=serialPort.getInputStreamtry{while((ch=input.read())>0){}}catch(IOExceptione){}}}publicSerialBean(intpublicint1,否則返回-1。初始化的結(jié)果是該串口被SerialBean獨(dú)占性使用,其參數(shù)被設(shè)置為9600,N,8,1。如果串口被成功初始化,則打開(kāi)一個(gè)進(jìn)程從串口傳入publicStringReadPort(intpublicvoidWritePort(Stringpublicvoidpackageserial;importjava.io.*;importjava.util.*; *Thisbeanprovidessomebasicfunctionstoimplementfullinformationexchangethroughthesrialpublicclass{staticStringPortName;CommPortIdentifierportId;SerialPortserialPort;staticOutputStreamout;staticInputStreamin;SerialBufferSB; **@paramPortIDtheIDoftheserialtobeused.1for2forCOM2,publicSerialBean(int{PortName="COM"+}Thisfunctioninitializetheserialportforcommunication.Itstartssthreadwhichconsistentlymonitorstheserialport.Anysignalfromtheserialportisstoredintoabufferpublicint{intInitSuccess=1;intInitFail =-1;{portId={serialPort= munication",}catch(PortInUseException{return}//UseInputStreamintoreadfromtheserialport,and//outtowritetotheserialport.{in=serialPort.getInputStream();out=serialPort.getOutputStream();}catch(IOException{return}//Initializethecommunicationparametersto9600,8,1,none.{}catch {return}}catch(NoSuchPortException{return}//whensuccessfullyopentheserialport,createanewserial//thencreateathreadthatconsistently ingsignals//theserialport. ingsignalsarestoredintheserialbuffer.SB=newSerialBuffer();RT=newReadSerial(SB,in);//returnsuccessinformationreturnInitSuccess;}*Thisfunctionreturnsastringwithacertainlengthfrom @paramLengthThelengthofthestringtobepublicStringReadPort(int{StringMsg=SB.GetMsg(Length);returnMsg;}Thisfunctionsendsamessagethroughtheserial@paramMsgThestringtobepublicvoidWritePort(String{intc;{for(inti=0;i<Msg.length();i++)}catch(IOExceptione)}Thisfunctionclosestheserialportinpublicvoid{}}SerialBuffer是本類(lèi)庫(kù)中所定義的串口緩沖區(qū),它定義了往該緩沖區(qū)中寫(xiě)入數(shù)據(jù)和從該緩沖區(qū)中數(shù)據(jù)所需要的函publicsynchronizedStringGetMsg(intpublicsynchronizedvoidPutChar(int在往緩沖區(qū)寫(xiě)入數(shù)據(jù)或者是從緩沖區(qū)數(shù)據(jù)的時(shí)候,必須保證數(shù)據(jù)的同步,因此GetMsg和PutChar函數(shù)均被為synchronized并在具體實(shí)現(xiàn)中采取措施實(shí)現(xiàn)的數(shù)據(jù)的同步。package*Thisclassimplementsthebufferareato ingdatafromthepublicclass{privateStringContent=privateStringCurrentMsg,TempContent;privatebooleanavailable=false;privateintLengthNeeded=*Thisfunctionreturnsastringwithacertainlengthfrom @paramLengthThelengthofthestringtobepublicsynchronizedStringGetMsg(int{LengthNeeded=if(LengthNeeded>{available=while(available=={{}catch(InterruptedExceptione){}}CurrentMsg=Content.substring(0,LengthNeeded);TempContent=Content.substring(LengthNeeded);Content=TempContent;LengthNeeded=1;return}Thisfunctionstoresacharactercapturedfromtheserialporttobuffer@paramtThecharvalueofthecharactertobepublicsynchronizedvoidPutChar(int{Characterd=newCharacter((char)Content=Content.concat(d.toString());if(LengthNeeded<Content.length()){available=}}}publicReadSerial(SerialBufferSB,InputStreampublicvoidpackageserial;importjava.io.*;*ThisclassreadsmessagefromthespecificserialportandthemessagetotheserialpublicclassReadSerialextends{privateSerialBufferComBuffer;privateInputStreamComPort;*@paramSBThebuffertosave ing@paramPortTheInputStreamfromthespecificserialpublicReadSerial(SerialBufferSB,InputStream{ComBuffer=ComPort=}publicvoid{intc;{while{c=ComPort.read();}}catch(IOExceptione)}}importserial.*;import*ThisisanexampleofhowtousetheSerialBean.ItopensCOM1andsixmessageswithdifferentlengthformtheserialclass{publicstaticvoidmain(String[]{//TODO:AddyourJAVAcodeshereSerialBeanSB=newSerialBean(1);StringMsg;for(inti=5;i<=10;{Msg=SB.ReadPort(i);SB.WritePort("Reply:"+Msg);}}}本類(lèi)庫(kù)中使用了JavaCommunicationAPI( m)。這是一個(gè)Java擴(kuò)展類(lèi)庫(kù),并不包括在標(biāo)準(zhǔn)的JavaSDK當(dāng)中。如果你尚未安裝這個(gè)擴(kuò)展類(lèi)庫(kù)的話(huà),你應(yīng)該從Sun公司的Java站點(diǎn)這個(gè)類(lèi)庫(kù)并將其安裝在你的系統(tǒng)上。在所的包里面包括正確安裝JavaCommunicationAPIRS-232COM1COM2COM1上運(yùn)行SerialExample,COM2上運(yùn)行Windows提供的超級(jí)終端程序。如果你有兩臺(tái)機(jī)器的話(huà),另外一端運(yùn)行WindowsSerialExample中本程序在Windows2000JavaSDK1.3java2007-05-11程序文件名稱(chēng) COM1importjava.awt.*;importjava.awt.event.*;importjava.io.*;importjava.util.*; classS_FrameextendsFrameimplements{/*檢測(cè)系統(tǒng)中可用的通訊端口類(lèi)*/staticCommPortIdentifierportId;/*Enumerationutil*/staticEnumerationportList;OutputStreamoutputStream;/*RS-232*/SerialPortserialPort;ThreadreadThread;Panelp=newPanel();TextFieldin_message=newTextField("COM1,9600,8,停止1.");TextAreaout_message=newButtonbtnOpen=newButton("打開(kāi)串口,發(fā)送數(shù)據(jù)");ButtonbtnClose=newButton("bytedata[]=newbyte[10240];booleanmark;super("串口發(fā)送數(shù)據(jù)");}//R_Frame()/*點(diǎn)擊按扭打開(kāi)串口publicvoidactionPerformed(ActionEventevent)if(event.getSource()==btnClose){serialPort.close();//關(guān)閉串口mark=true;run()方法}else{/*從文本區(qū)按字節(jié)數(shù)據(jù)*/in_message.setText("串口COM1已經(jīng)打開(kāi),正在每2秒鐘發(fā)送一次數(shù) }}//actionPerformed()publicvoidstart(){/*獲取系統(tǒng)中所有的通訊端口/*用循環(huán)結(jié)構(gòu)找出串口whileif(portId.getPortType()CommPortIdentifier.PORT_SERIAL){if(portId.getName().equals("COM1")){/**/try{serialPort=(SerialPort) m",}catch(PortInUseExceptione){try{outputStream=}catch(IOExceptione)}//if}//if}//whilereadThread=new2}catch(Exceptione){}//start()publicvoidrun(){try{}catch mOperationExceptione){try{}catch(IOExceptione){try{Thread.sleep(2000);if{return;run}}catch(InterruptedExceptione){}//run()S_Framepublic {publicstaticvoidmain(String{S_FrameS_win=newS_Frame();S_win.addWindowListener(newWindowAdapter(){publicvoidwindowClosing(WindowEvent{System.exit(0);}}程序文件名稱(chēng) COM1importjava.awt.*;importjava.awt.event

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論