基于RSmodbus協(xié)議的雙機(jī)串行通信(完整資料)_第1頁(yè)
基于RSmodbus協(xié)議的雙機(jī)串行通信(完整資料)_第2頁(yè)
基于RSmodbus協(xié)議的雙機(jī)串行通信(完整資料)_第3頁(yè)
基于RSmodbus協(xié)議的雙機(jī)串行通信(完整資料)_第4頁(yè)
基于RSmodbus協(xié)議的雙機(jī)串行通信(完整資料)_第5頁(yè)
已閱讀5頁(yè),還剩79頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于RSmodbus協(xié)議的雙機(jī)串行通信(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)

目錄基于RSmodbus協(xié)議的雙機(jī)串行通信(完整資料)(可以直接使用,可編輯優(yōu)秀版資料,歡迎下載)TOC\o”1-3"\h\z\uHYPERLINK\l”_Toc310518326"一、Modbus協(xié)議分析PAGEREF_Toc310518326\h1HYPERLINK\l”_Toc310518327”1.1兩種傳輸方式PAGEREF_Toc310518327\h2HYPERLINKV1V2V3”};ucharrow4[]={”..?!保? inti;?reving=0;?nodeok=0; timercnt=0x00; asknode=0x00;?temp16_2=250;?for(i=0;i〈10;i++){mrx[i]=0x00;} for(i=0;i〈8;i++){mtx[i]=0x00;}Delay400Ms();//啟動(dòng)等待,等LCD講入工作狀態(tài) LCDInit();//LCD初始化?Delay5Ms();//延時(shí)片刻(可不要)?DisplayListChar(1,0,row1);?DisplayListChar(2,1,row2);?ReadDataLCD();//測(cè)試用句無意義??delaycnt=0xffff;?while(delaycnt—-){}?delaycnt=0xffff;?while(delaycnt-—){} DisplayListChar(0,0,row3);?InitUART();?crcok=1; while(1)?{???if(crcok==1)??{??? ?? temp16_1=mrx[3];? ?temp16_1*=temp16_2;???temp16_1>〉=7; ? switch(mrx[0])? ?{? ??case0x01:{row4[1]=(temp16_1/100)+0x30;row4[3]=((temp16_1%100)/10)+0x30;row4[4]=(temp16_1%10)+0x30;break;}??? case0x02:{row4[6]=(temp16_1/100)+0x30;row4[8]=((temp16_1%100)/10)+0x30;row4[9]=(temp16_1%10)+0x30;break;}? case0x03:{row4[11]=(temp16_1/100)+0x30;row4[13]=((temp16_1%100)/10)+0x30;row4[14]=(temp16_1%10)+0x30;break;}? ? default:{break;}? ?} ??DisplayListChar(0,1,row4);//在指定位置顯示從機(jī)發(fā)送來的數(shù)據(jù)???delaycnt=0x3ff;//顯示延遲 ? while(delaycnt——){} ?reving=1; ??send101[0]=(asknode++)+0x01;//打包主機(jī)發(fā)送幀???asknode_save=asknode—1; ??asknode%=3; temp16=Crc16(send101,6);//產(chǎn)生16位CRC校驗(yàn)碼 ? for(i=0;i<6;i++){mtx[i]=send101[i];} mtx[6]=(temp16>〉8)&0x00ff;? mtx[7]=temp16&0x00ff;???delaycnt=0x3ff;while(delaycnt—-){} ?for(i=0;i<8;i++)? {?temp8=mtx[i];? SendOneByte(temp8);? ?}?? crcok=0; ?delaycnt=0x3ff;? ?while(delaycnt-—){}? timercnt=0; ? reving=0;//發(fā)送完畢關(guān)閉LED,等待接收 ?} }}//定時(shí)100ms,重新發(fā)送數(shù)據(jù)voidTimer0Interrupt(void)interrupt1{TH0=0x3C;TL0=0x0B0;?if(++timercnt==5)?{? crcok=1;??asknode=asknode_save; ?timercnt=0; }}//接收從機(jī)數(shù)據(jù)voidUARTInterrupt(void)interrupt4{?ucharbyterev;if(RI){RI=0;byterev=SBUF;??mdproc(byterev);}elseTI=0;}voidmdproc(ucharb){?Uint16temp16_1,temp16_2; if(nodeok==0) {?? if(b==send101[0])//地址是否正確??{ nodeok=1;?? revptr=1; mrx[0]=b; } }?elseif(revptr<11)//是否發(fā)送完畢?{ ?mrx[revptr++]=b; } else {? revptr=0; nodeok=0;??temp16_1=Crc16(mrx,9);??temp16_2=mrx[9];? temp16_2<〈=8; ?temp16_2|=mrx[10];??if(temp16_1==temp16_2)//CRC校驗(yàn)是否正確??{ if(mrx[1]==0x54){asknode=asknode_save;crcok=1;}? elsecrcok=1;??} ?else ?{? asknode=asknode_save;? crcok=1;??} }}voidSendOneByte(unsignedcharc){SBUF=c;while(!TI);TI=0;}//初始化串口通信(波特率設(shè)置為9600)voidInitUART(void){TMOD=0x20;SCON=0x50;TH1=0xFD;TL1=TH1;PCON=0x00;EA=1;ES=1;TR1=1; TMOD|=0x01;TH0=0x3C;TL0=0xB0;//timersetsat20msET0=1;TR0=1;}//產(chǎn)生16位CRC校驗(yàn)碼Uint16Crc16(uchar*puchMsg,Uint16usDataLen){ Uint16uchCRCHi=0xFF;/*高CRC字節(jié)初始化*/?Uint16uchCRCLo=0xFF;/*低CRC字節(jié)初始化*/ Uint16temp16;?Uint32uIndex;/*CRC循環(huán)中的索引*/ while(usDataLen—-)/*傳輸消息緩沖區(qū)*/ {? temp16=*puchMsg++; uIndex=uchCRCHi^temp16;/*計(jì)算CRC*/? uchCRCHi=uchCRCLo^auchCRCHi[uIndex];??uchCRCLo=auchCRCLo[uIndex];?}?return(uchCRCHi<〈8|uchCRCLo);}//寫數(shù)據(jù)voidWriteDataLCD(unsignedcharWDLCD){ReadStatusLCD();//檢測(cè)忙LCD_Data=WDLCD;LCD_RS=1;LCD_RW=0;LCD_E=0;//若晶振速度太高可以在這后加小的延時(shí)LCD_E=0;//延時(shí)LCD_E=0;LCD_E=1;}//寫指令voidWriteCommandLCD(unsignedcharWCLCD,BuysC)//BuysC為0時(shí)忽略忙檢測(cè){?if(BuysC)ReadStatusLCD();//根據(jù)需要檢測(cè)忙 LCD_Dat(yī)a=WCLCD;?LCD_RS=0;?LCD_RW=0;?LCD_E=0; LCD_E=0;?LCD_E=1;}//讀數(shù)據(jù)unsignedcharReadDataLCD(void){?LCD_RS=1;?LCD_RW=1; LCD_E=0; LCD_E=0;?LCD_E=1;?return(LCD_Data);}//讀狀態(tài)unsignedcharReadStatusLCD(void){?LCD_Data=0xFF;?LCD_RS=0;?LCD_RW=1; LCD_E=0; LCD_E=0; LCD_E=1;?while(LCD_Data&Busy);//檢測(cè)忙信號(hào) return(LCD_Data);}//LCD初始化voidLCDInit(void){?LCD_Data=0;?WriteCommandLCD(0x38,0);//三次顯示模式設(shè)置,不檢測(cè)忙信號(hào) Delay5Ms();?WriteCommandLCD(0x38,0); Delay5Ms();?WriteCommandLCD(0x38,0); Delay5Ms(); WriteCommandLCD(0x38,1);//顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào)?WriteCommandLCD(0x08,1);//關(guān)閉顯示?WriteCommandLCD(0x01,1);//顯示清屏 WriteCommandLCD(0x06,1);//顯示光標(biāo)移動(dòng)設(shè)置 WriteCommandLCD(0x0C,1);//顯示開及光標(biāo)設(shè)置}//按指定位置顯示一個(gè)字符voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDData){ Y&=0x1;?X&=0xF;//限制X不能大于15,Y不能大于1 if(Y)X|=0x40;//當(dāng)要顯示第二行時(shí)地址碼+0x40; X|=0x80;//算出指令碼 WriteCommandLCD(X,0);//這里不檢測(cè)忙信號(hào),發(fā)送地址碼 WriteDat(yī)aLCD(DData);}//按指定位置顯示一串字符voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedchar*DData){ unsignedcharListLength; ListLength=0;?Y&=0x1;?X&=0xF;//限制X不能大于15,Y不能大于1 while(DData[ListLength]>=0x20)//若到達(dá)字串尾則退出 { if(X<=0xF)//X坐標(biāo)應(yīng)小于0xF? { ? DisplayOneChar(X,Y,DData[ListLength]);//顯示單個(gè)字符?? ListLength++; ?X++;? }?}}//5ms延時(shí)voidDelay5Ms(void){?unsignedintTempCyc=5552;?while(TempCyc--);}//400ms延時(shí)voidDelay400Ms(void){ unsignedcharTempCycA=5; unsignedintTempCycB;?while(TempCycA-—)?{ ?TempCycB=7269; ?while(TempCycB-—); }}/******************************從機(jī)*********************************/#include〈reg52。h〉#include〈intrins。h>#defineUint16unsignedint#defineUint32unsignedlong#defineucharunsignedcharsbitnodesel0=P3^2;sbitnodesel1=P3^3;sbitreving=P1^6;sbitSCL2=P1^1;??//SCL2定義為P1口的第3位腳,連接ADC0831SCL腳sbitSDA2=P1^2;? //SDA2定義為P1口的第4位腳,連接ADC0831SDA腳sbitCS2=P1^0;? //CS2定義為P1口的第4位腳,連接ADC0831CS腳bitnodeok;bitcrcok;bitprocok;ucharnode;ucharmtx[11],mrx[10];ucharsend101[9]={0x00,0x04,0x06,0x00,0x00,0x00,0x00,0x00,0x00};uchartimercnt;ucharbyterev;//接收字符ucharrevptr;Uint16delaycnt;voidInitUART(void);voidSendOneByte(unsigned);voidmdproc(uchar);unsignedcharad0831read(void);?//定義該函數(shù)為讀取ADC0831的數(shù)據(jù)Uint16Crc16(Uint16*puchMsg,Uint16usDataLen);voidsend_error_report();//CRC校驗(yàn)出錯(cuò),發(fā)送錯(cuò)誤報(bào)告/*CRC高位字節(jié)值表*/constUint16codeauchCRCHi[]={0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40};/*CRC低位字節(jié)值表*/constUint16codeauchCRCLo[]={0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,0x07,0xC7,0x05,0xC5,0xC4,0x04,0xCC,0x0C,0x0D,0xCD,0x0F,0xCF,0xCE,0x0E,0x0A,0xCA,0xCB,0x0B,0xC9,0x09,0x08,0xC8,0xD8,0x18,0x19,0xD9,0x1B,0xDB,0xDA,0x1A,0x1E,0xDE,0xDF,0x1F,0xDD,0x1D,0x1C,0xDC,0x14,0xD4,0xD5,0x15,0xD7,0x17,0x16,0xD6,0xD2,0x12,0x13,0xD3,0x11,0xD1,0xD0,0x10,0xF0,0x30,0x31,0xF1,0x33,0xF3,0xF2,0x32,0x36,0xF6,0xF7,0x37,0xF5,0x35,0x34,0xF4,0x3C,0xFC,0xFD,0x3D,0xFF,0x3F,0x3E,0xFE,0xFA,0x3A,0x3B,0xFB,0x39,0xF9,0xF8,0x38,0x28,0xE8,0xE9,0x29,0xEB,0x2B,0x2A,0xEA,0xEE,0x2E,0x2F,0xEF,0x2D,0xED,0xEC,0x2C,0xE4,0x24,0x25,0xE5,0x27,0xE7,0xE6,0x26,0x22,0xE2,0xE3,0x23,0xE1,0x21,0x20,0xE0,0xA0,0x60,0x61,0xA1,0x63,0xA3,0xA2,0x62,0x66,0xA6,0xA7,0x67,0xA5,0x65,0x64,0xA4,0x6C,0xAC,0xAD,0x6D,0xAF,0x6F,0x6E,0xAE,0xAA,0x6A,0x6B,0xAB,0x69,0xA9,0xA8,0x68,0x78,0xB8,0xB9,0x79,0xBB,0x7B,0x7A,0xBA,0xBE,0x7E,0x7F,0xBF,0x7D,0xBD,0xBC,0x7C,0xB4,0x74,0x75,0xB5,0x77,0xB7,0xB6,0x76,0x72,0xB2,0xB3,0x73,0xB1,0x71,0x70,0xB0,0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92,0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54,0x9C,0x5C,0x5D,0x9D,0x5F,0x9F,0x9E,0x5E,0x5A,0x9A,0x9B,0x5B,0x99,0x59,0x58,0x98,0x88,0x48,0x49,0x89,0x4B,0x8B,0x8A,0x4A,0x4E,0x8E,0x8F,0x4F,0x8D,0x4D,0x4C,0x8C,0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86,0x82,0x42,0x43,0x83,0x41,0x81,0x80,0x40};voidmain(void){ unsignedchartemp8; Uint16temp16;inti; reving=0; crcok=0; nodeok=0; timercnt=0x00; for(i=0;i〈10;i++){mrx[i]=0x00;} for(i=0;i<11;i++){mtx[i]=0x00;} node=!nodesel1;?node<〈=1; node|=!nodesel0;?send101[0]=node;//從節(jié)點(diǎn)地址?InitUART(); while(1) {? ?if(crcok==1)? {?? ?reving=1; send101[3]=ad0831read();//得到采樣數(shù)據(jù) ??for(i=0;i〈9;i++)? { mtx[i]=send101[i];? } ? temp16=Crc16(send101,9); ? mtx[9]=(temp16>〉8)&0x00ff; ??mtx[10]=temp16&0x00ff;? ?delaycnt=0x3fff;???while(delaycnt——){}rw=1; ??delaycnt=0x3ff; ? while(delaycnt——){}for(i=0;i〈11;i++) { temp8=mtx[i];????SendOneByte(temp8); ??} ??crcok=0; ?delaycnt=0x3ff; ?while(delaycnt--){}?? reving=0;??} ? }}Uint16Crc16(uchar*puchMsg,Uint16usDataLen){ Uint16uchCRCHi=0xFF;/*高CRC字節(jié)初始化*/ Uint16uchCRCLo=0xFF;/*低CRC字節(jié)初始化*/?Uint16temp16; Uint32uIndex;/*CRC循環(huán)中的索引*/?while(usDat(yī)aLen-—)/*傳輸消息緩沖區(qū)*/?{??temp16=*puchMsg++; ?uIndex=uchCRCHi^temp16;/*計(jì)算CRC*/? uchCRCHi=uchCRCLo^auchCRCHi[uIndex];? uchCRCLo=auchCRCLo[uIndex];?}?return(uchCRCHi<〈8|uchCRCLo);}voidTimer0Interrupt(void)interrupt1{TH0=0x3C;TL0=0x0B0;?if(++timercnt==50)?{ timercnt=0; }}voidUARTInterrupt(void)interrupt4{if(RI){RI=0;byterev=SBUF;? mdproc(byterev);}elseTI=0;}voidmdproc(ucharb)//MODBUS04功能處理過程,先檢驗(yàn)節(jié)點(diǎn)地址,正確則檢驗(yàn)CRC,正確則回復(fù)主機(jī)要求數(shù)據(jù),不正確發(fā)送錯(cuò)誤報(bào)告?if(nodeok==0)?{ ?if(b==node){? ?nodeok=1;???datalen=7; ? mrx[0]=b; ?revptr=1; } } else {?mrx[revptr++]=b; ?if(revptr==8) {????nodeok=0; ??temp16_1=Crc16(mrx,6);? temp16_2=mrx[6];temp16_2〈<=8;? ?temp16_2|=mrx[7];?? if(temp16_1==temp16_2)? ?{? ?? crcok=1; ??}? else???send_error_report();?? ??} }}//發(fā)送錯(cuò)誤報(bào)告voidsend_error_report(){?reving=1; send101[1]=0x54;//修改功能碼?for(i=0;i<9;i++){mtx[i]=send101[i];} temp16=Crc16(send101,9); mtx[9]=(temp16>〉8)&0x00ff; mtx[10]=temp16&0x00ff;?delaycnt=0x3fff;?while(delaycnt—-){} rw=1;?delaycnt=0x3ff; while(delaycnt-—){} for(i=0;i〈11;i++) { ? temp8=mtx[i];? SendOneByte(temp8);?}?crcok=0; delaycnt=0x3ff;?while(delaycnt--){} rw=0; reving=0;}voidSendOneByte(unsignedcharc){SBUF=c;while(?。訧);TI=0;}voidInitUART(void){TMOD=0x20;SCON=0x50;TH1=0xFE;TL1=TH1;PCON=0x00;EA=1;ES=1;TR1=1;?TMOD|=0x01;TH0=0x3C;TL0=0xB0;//timersetsat20msET0=1;TR0=1;}voiddelay(void) ???//空5個(gè)指令{ _nop_();_nop_();_nop_();_nop_();_nop_();}unsignedcharad0831read(void){ ? ? ? ?unsignedchari=0,tmp=0;SDA2=1; CS2=0; _nop_();?_nop_(); SCL2=0;?_nop_();?_nop_(); SCL2=1; _nop_();?_nop_();?SCL2=0;?_nop_(); _nop_(); SCL2=1;?_nop_();?_nop_();?SCL2=0;?_nop_(); _nop_();?for(i=0;i<8;i++){?tmp<<=1; if(SDA2) tmp++;? SCL2=1; _nop_(); _nop_(); SCL2=0; _nop_(); _nop_();?}?CS2=1;?returntmp;}基于Python的串口通信(2)Pyvisa安裝pyvisasource安裝下載pyvisa說明文檔:http://pyvisa.readthedocs.org/en/lat(yī)est/下載鏈接:?https://gith/hgrecco/pyvisa

?http://pyvisa.sourceforge.net/解壓命令解壓cd/xxx/xxx/pyvisa-master.zip(切換到相關(guān)文件所在目錄)tarzxvfpyvisa-master。zip手動(dòng)解壓(Mac下像.zip類的格式一般會(huì)在Safari下載完成后自動(dòng)解壓)安裝visamodulecd/xxx/xxx/pyvisa-master(切換到解壓后的文件所在目錄)sudopythonsetup.pyinstall(加sudo以避免權(quán)限問題:”Permissiondenied...”)注:pyvisa是依托于enum34的,如果是首次安裝,還需要先下載enum34并安裝:https://pypi.python.org/pypi/enum34/1.0.4安裝方法同上:pip安裝sudopipinstallpyvisa注:上圖中之所以寫成pip3.5(pip/pip3)是因?yàn)橄到y(tǒng)里除了自帶的Python2外,還裝了Python3(pip3為默認(rèn)pip).安裝NI-VISApyvisa是基于NI-VISA庫(kù)的,所以要正常的使用,還需要安裝NI的VISA庫(kù):http://www.ni.com/visa/下載鏈接:http:///download/ni-visa—14.0。1/5023/en/visa通信測(cè)試USB模式在IDLE中進(jìn)行如下測(cè)試:〉>>importvisa>>>rm=visa。ResourceManager()〉>>rm。list_resources()(u'USB0::0x0957::0x1A07::MY53203784::INSTR',)〉>〉my_instrument=rm.open_resource(’USB0::0x0957::0x1A07::MY53203784::INSTR')>>>print(my_instrument。query('*IDN?’))AgilentTechnologies,34461A,MY53203784,A.01。09—02。25-01.09—00.35-01—01>〉〉附:一個(gè)簡(jiǎn)單的測(cè)試腳本(.py文件)visa#!/usr/bin/envpython#-*—coding:utf-8—*—importvisafrompyvisa.resources.usbimportUSBInstrumentfrompyvisa。constantsimport*rm=visa。ResourceManager()res=rm.list_resources()#printrm#printres#print(len(res))iflen(res)>0:#print(res[0])fordevinres:dev_name=str(dev)ifdev_name.startswith

溫馨提示

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

評(píng)論

0/150

提交評(píng)論