là sao bạn có thể giải thích rõ giùm mình dc ko. cái này minh ko rành cho lắm
Thông báo
Collapse
No announcement yet.
Giao thức TCP/IP và Web server với AVR
Collapse
This is a sticky topic.
X
X
-
Nguyên văn bởi stevenboy Xem bài viếtlà sao bạn có thể giải thích rõ giùm mình dc ko. cái này minh ko rành cho lắm
Khi bạn cắm line vào Modem nó sẽ cấp phát động ip cho mô đun, và ip này là private chứ không phải public ip, nên từ bên ngoài mạng sẽ không kết nối được với mô đun.
NAT sẽ thay thế ip private thành ip public động mà ISP cấp cho modem của chúng ta.
Sơ sơ là như vậy, bạn đọc lại từ đầu, thầy tâm có nói về NAT.
Bạn không nói tên modem nên mình không hướng dẫn được, bạn search google cách setup NAT nhé
Comment
-
Cần anh giúp đỡ.
Nguyên văn bởi yamailuk Xem bài viếtTrong đó a có file hướng dẫn rồi mà, hôm bữa nhờ thầy up file mô phỏng này lên #1 nhưng không được vì bài quá 72h không sửa được.
Để mô phỏng được thì cần:
+ Cắm line vì project không viết cho wifi vì cấu trúc khung dữ liệu khác nhau
+ Cài proteus và wincap
Mẹo test xem được chưa là: mở Explorer16 with Ethernet PICtail.DSN trong thư mục C:\Program Files (x86)\Labcenter Electronics\Proteus 7 Professional\SAMPLES\VSM MPLAB Viewer\Eval Boards\Ethernet (nếu khác ổ đĩa thì change lại cho đúng) (bản này microchip viết cho pic)
nếu mô phỏng bình thường thì chắc chắn là code hex bạn nạp vào avr lỗi.
+ Kiểm tra lại xung nhịp thạch anh trong code.
Em đã làm như anh bảo nhưng không được, e cài win Xp thử thì làm được rồi, e nghĩ là do ứng dụng nào đó chiếm port 80 của mình
Em cám ơn a nhé, bây giờ em vào mô phỏng được rồi.
Và bây giờ e sẽ từ từ đọc và tìm hiểu thật kỹ.
Có j khó khăn mong anh giúp đỡ nhé!
Cám ơn anh nhiều
Comment
-
Nguyên văn bởi ga_kon Xem bài viếtCó ai xử lí được chuổi kí tự gửi về LCD trên Enthernet Board không? Chỉ dùm em với! Nó có giống với xử lí cho Relay hay ADC không?
Comment
-
Webpage như thế này:
"<p align=\"left\"><input type=\"checkbox\" name=\"Led1\" value=\"ON\"%LE1>LED 1</p>"
"<p align=\"left\"><input type=\"checkbox\" name=\"Led2\" value=\"ON\"%LE2>LED 2</p>"
"<p align=\"left\"><input type=\"checkbox\" name=\"Led3\" value=\"ON\"%LE3>LED 3</p>"
"<p align=\"left\"><input type=\"checkbox\" name=\"Led4\" value=\"ON\"%LE4>LED 4</p>"
"<p align=\"left\"><input type=\"checkbox\" name=\"Led5\" value=\"ON\"%LE5>LED 5</p>"
"<input name=\"lcd1\" size=\"16\" maxlength=\"16\" type=\"text\" />LCD Line 1<br />"
"<input name=\"lcd2\" size=\"16\" maxlength=\"16\" type=\"text\" />LCD Line 2<br />"
"<p align=\"center\"><input type=\"submit\" value=\"Start\" name=\"Submit\" />"
Vậy có phải:
lcd1=<chuỗi thứ nhất nhập vào>
lcd2=<chuỗi thứ hai nhập vào>
Nếu muốn tìm được chuỗi lưu trong lcd1 có phải ta viết trong phần http POST là:
if((buffer[i] == 'l')&&(buffer[i+1] == 'c')&&(buffer[i+2] == 'd')&&(buffer[i+3] == '1'))
{
while(bufer[i]!=0x0a) // Nhan phim Enter
{
LCD_PRINT(buffer[i++]);
}
}
Comment
-
Nguyên văn bởi ga_kon Xem bài viết
if((buffer[i] == 'l')&&(buffer[i+1] == 'c')&&(buffer[i+2] == 'd')&&(buffer[i+3] == '1'))
{
while(bufer[i]!=0x0a) // Nhan phim Enter
{
LCD_PRINT(buffer[i++]);
}
}
Comment
-
Nguyên văn bởi lu_lu Xem bài viếtCó bác nào cho em hỏi, trong cái project em down về, hàm httpInit() không dùng tới trong ntAVRnet.c nhưng vẫn điều khiển được thiết bị, rõ ràng là phải đăng nhập admin:1234 mới điều khiển được mà? Khó nghĩ quá!
Nguyên văn bởi lu_lu Xem bài viếtCó bác nào có Project đầy đủ về đề tài này không vậy các bác, cho em xin với!
Comment
-
Nguyên văn bởi Ngoc Anh 91 Xem bài viếtLại gặp vấn đề rồi các anh ơi:
//If POST method--------------------------------------------
else if(httpSessionTable[i].rqst.method == HTTP_REQUEST_POST)
{
//Update POST data
if(findstr(PSTR("Submit=Start"),buffer,bufferLen) != -1)
{
//OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
//================ DIEU KHIEN THIET BI =============
//OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
if((findstr(PSTR("Led1=ON"),buffer,bufferLen)) != -1)
{
sbi(PORTD,LED1);
}
else
{
cbi(PORTD,LED1);
}
//---------------------------------------------------
if((findstr(PSTR("Led2=ON"),buffer,bufferLen)) != -1)
{
sbi(PORTD,LED2);
}
else
{
cbi(PORTD,LED2);
}
//---------------------------------------------------
if((findstr(PSTR("Led3=ON"),buffer,bufferLen)) != -1)
{
sbi(PORTD,LED3);
}
else
{
cbi(PORTD,LED3);
}
//---------------------------------------------------
if((findstr(PSTR("Led4=ON"),buffer,bufferLen)) != -1)
{
sbi(PORTD,LED4);
}
else
{
cbi(PORTD,LED4);
}
//---------------------------------------------------
if((findstr(PSTR("Led5=ON"),buffer,bufferLen)) != -1)
{
sbi(PORTD,LED5);
}
else
{
cbi(PORTD,LED5);
}
//================================================== ================
Đây là phần điều khiển 5 con led đơn của em? Điều khiển được rồi,nhưng sao con led sáng mờ căm? Em test bằng code khác thì led sáng bình thường! Tưởng do LCD, nên rút LCD ra, ai ngờ cũng vậy, sao vậy ta? Em chỉ mới thay đổi hàm HTTPDataIn(), còn hàm HTTPSent() em thay đổi thế này:
void HTTPSend(const prog_char progdata[],unsigned int dataLen,struct tcpSession *pSession, unsigned char endData)
{
unsigned int i;
DDRD=0xFF;
unsigned int srcDataIdx = 0;
unsigned char* dataBuffer;
unsigned char Flags;
//unsigned char* tmpStr;
unsigned char tmpChr,tmpVar;
Flags = TCP_PSH_FLAG;
dataBuffer = ethGetBuffer() + ETH_HEADER_LEN + IP_HEADER_LEN + TCP_HEADER_LEN;
if(dataLen == 0)
{
Flags |= TCP_ACK_FLAG;
if(endData)
{
if(srcDataIdx == dataLen)
{
Flags |= TCP_FIN_FLAG;
pSession->sesState = TCP_STATE_FIN_WAIT1;
}
}
TCPPackedSend(pSession,Flags,0,dataBuffer);
}
while(srcDataIdx < dataLen)
{
i = 0;
while(i<MAX_SEGMENT_SIZE)
{
tmpChr = pgm_read_byte(progdata + srcDataIdx++);
//OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOO
//================ GUI TRANG THAI THIET BI =============
//OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOO
if(tmpChr == '%')
{ //Truong hop ung voi dieu khien relay ("%Ledx)
if( (i + 9) > MAX_SEGMENT_SIZE)
{ //Neu khong con du cho trong tren buffer
srcDataIdx--;
break;
}
//Tiep tuc neu du cho trong tren buffer
tmpVar = pgm_read_byte(progdata + srcDataIdx + 3) - 0x30;
if((pgm_read_byte(progdata + srcDataIdx) == 'L')&&(pgm_read_byte(progdata + srcDataIdx + 1) == 'E')&&(pgm_read_byte(progdata + srcDataIdx + 1) == '1'))
{
if(LED1==1)
{//checked
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'd';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
else
{
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'w';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
}
if((pgm_read_byte(progdata + srcDataIdx) == 'L')&&(pgm_read_byte(progdata + srcDataIdx + 1) == 'E')&&(pgm_read_byte(progdata + srcDataIdx + 1) == '2'))
{
if(LED2==1)
{//checked
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'd';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
else
{
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'w';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
}
if((pgm_read_byte(progdata + srcDataIdx) == 'L')&&(pgm_read_byte(progdata + srcDataIdx + 1) == 'E')&&(pgm_read_byte(progdata + srcDataIdx + 1) == '3'))
{
if(LED3==1)
{//checked
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'd';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
else
{
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'w';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
}
if((pgm_read_byte(progdata + srcDataIdx) == 'L')&&(pgm_read_byte(progdata + srcDataIdx + 1) == 'E')&&(pgm_read_byte(progdata + srcDataIdx + 1) == '4'))
{
if(LED4==1)
{//checked
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'd';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
else
{
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'w';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
}
if((pgm_read_byte(progdata + srcDataIdx) == 'L')&&(pgm_read_byte(progdata + srcDataIdx + 1) == 'E')&&(pgm_read_byte(progdata + srcDataIdx + 1) == '5'))
{
if(LED5==1)
{//checked
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'd';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
else
{
dataBuffer[i++] = ' ';dataBuffer[i++] = 'c';dataBuffer[i++] = 'h';dataBuffer[i++] = 'e';dataBuffer[i++] = 'c';dataBuffer[i++] = 'k';dataBuffer[i++] = 'e';dataBuffer[i++] = 'w';dataBuffer[i++] = ' ';
srcDataIdx += 5;
}
}
}
dataBuffer[i++] = tmpChr; //Copy data to tcp data buffer
//========================== END =======================
if(srcDataIdx==dataLen)
{
break;
}
}
Flags |= TCP_ACK_FLAG;
if(endData)
{
if(srcDataIdx == dataLen)
{
Flags |= TCP_FIN_FLAG;
pSession->sesState = TCP_STATE_FIN_WAIT1;
}
}
TCPPackedSend(pSession,Flags,i,dataBuffer);
//delay_ms(100);
#ifdef NETSTACK_DEBUG
printf("Sent %d byte\r\n",srcDataIdx);
#endif
}
}
Biên dịch hok có lỗi, nạp OK, nhưng ping không được?Last edited by stevenboy; 18-03-2013, 15:02.
Comment
-
else if((pgm_read_byte(progdata + srcDataIdx) == 'A') && (pgm_read_byte(progdata + srcDataIdx + 1) == 'D')){
tmpStr = (unsigned char*)uInt2StrLen(LM35_TYP_DECODE(GetADC(tmpVar)), 3);//(unsigned char*)uByte2Str(GetAD(tmpChr));
tmpVar = 0;
dataBuffer[i++] = tmpStr[tmpVar++];
dataBuffer[i++] = tmpStr[tmpVar++];
dataBuffer[i++] = '.';
dataBuffer[i++] = tmpStr[tmpVar++];
//while(tmpStr[tmpChr] != 0){
// dataBuffer[i++] = tmpStr[tmpChr++];
//}
srcDataIdx += 4;
mọi người giải thích giùm cái
tmpStr = (unsigned char*)uInt2StrLen(LM35_TYP_DECODE(GetADC(tmpVar)), 3);//(unsigned char*)uByte2Str(GetAD(tmpChr));
vậy biến tmpStr nó ra 1 chuỗi kí tự ak.
nếu muốn hiển thị số 20 lên thì tmpStr khai báo nhứ thế nào. ai pro giúp giùm với.
Comment
-
Nguyên văn bởi stevenboy Xem bài viếtelse if((pgm_read_byte(progdata + srcDataIdx) == 'A') && (pgm_read_byte(progdata + srcDataIdx + 1) == 'D')){
tmpStr = (unsigned char*)uInt2StrLen(LM35_TYP_DECODE(GetADC(tmpVar)), 3);//(unsigned char*)uByte2Str(GetAD(tmpChr));
tmpVar = 0;
dataBuffer[i++] = tmpStr[tmpVar++];
dataBuffer[i++] = tmpStr[tmpVar++];
dataBuffer[i++] = '.';
dataBuffer[i++] = tmpStr[tmpVar++];
//while(tmpStr[tmpChr] != 0){
// dataBuffer[i++] = tmpStr[tmpChr++];
//}
srcDataIdx += 4;
mọi người giải thích giùm cái
tmpStr = (unsigned char*)uInt2StrLen(LM35_TYP_DECODE(GetADC(tmpVar)), 3);//(unsigned char*)uByte2Str(GetAD(tmpChr));
vậy biến tmpStr nó ra 1 chuỗi kí tự ak.
nếu muốn hiển thị số 20 lên thì tmpStr khai báo nhứ thế nào. ai pro giúp giùm với.
Sau đó truyền đi như việc điều khiển Relay
Comment
Bài viết mới nhất
Collapse
-
bởi chinhnguyen9Hoạt động của thế hệ mạch cân bằng trước đây dựa trên nguyên lý so áp giữa 2 string liền kề. Hoạt động cân bằng chỉ kích hoạt khi sự chênh lệch vượt ngưỡng 100mV và ngưng hoạt động khi mức chênh lệch giảm xuống còn 30mV. Bản...
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 05:07 -
-
bởi chinhnguyen9Xem hình minh họa có phần thuyết minh bên trong tiện việc quan sát và đọc thuyết minh. Khi G1 high dòng điện chạy theo các đường màu đen khi G2 high dòng điện chạy theo các đường màu nâu đỏ.
Bổ sung một tính chất củng cố cho tên gọi tụ bay: Trong mạch đề cập chỉ...-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 21:02 -
-
bởi chinhnguyen9Sản phẩm này ghi version 2.0 01-2024 MADE IN CHINA nhưng không thấy thương hiệu hình 1
Do 8 chân G của 8 mosfet được đấu song song thành 2 nhóm nên có cùng biên độ xung kích 12V. Nhưng Q1 và Q2 nằm cuối dãy, chân S cùa chúng có điện áp DC cao đến...-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 20:37 -
-
bởi xuanthiettivi em bị mất remote lỡ vào chế độ usb giờ không chọn lại source được. ai có file nạp cho em xin với ạ. Model 32HD957T2
-
Channel: Điện tử truyền hình
Hôm qua, 10:53 -
-
Trả lời cho Giải thích nôm na từ "tụ bay"bởi chinhnguyen9Đa tạ lời cảm ơn của bạn. Mến!
-
Channel: Hướng dẫn sử dụng diễn đàn
Hôm qua, 05:06 -
-
Trả lời cho Xin tư vấn về mạch cầu H cho inverter 1000wbởi thebinhzChắc là không được đâu bạn ơi
Quán ăn Vĩnh Yên-
Channel: Điện tử công suất
25-04-2024, 21:56 -
-
Trả lời cho Giải thích nôm na từ "tụ bay"bởi thebinhzCảm ơn bạn nhiều nha
Nhà hàng Vĩnh Yên-
Channel: Hướng dẫn sử dụng diễn đàn
25-04-2024, 21:50 -
-
bởi chinhnguyen9Vai viết này đã được chuyển sang chuyên mục phù hợp....
-
Channel: Hướng dẫn sử dụng diễn đàn
25-04-2024, 08:29 -
-
bởi chinhnguyen9
Xem hình có phần thuyết minh bên trong tiện việc quan sát và đọc thuyết minh. Khi G1 high dòng điện chạy theo các đường màu đen khi G2 high dòng điện chạy theo các đường màu nâu đỏ.
Bổ sung một tính chất củng cố cho tên gọi tụ...-
Channel: Hướng dẫn sử dụng diễn đàn
24-04-2024, 01:15 -
-
Trả lời cho CODE/ROM-dvb-vcd-dvd-mindikaraoke- Máy nạp Rombởi ThaPhong20Mình cần giúp đõ đầu California MIDI-800K
Ngày trc có nghe tin đồn đầu này có thể chạy đĩa DH-3600 nên mua Vol 26 về chạy thử và nó báo góc trái dòng code rồi tự thay nền DH-3600S luôn. Sau khi tự thay nền thì nó tiếp tục báo dòng Code...-
Channel: Thiết bị thu phát MEDIA dân dụng
23-04-2024, 19:24 -
Comment