知表不言 知表不言
关注数: 13 粉丝数: 51 发帖数: 1,868 关注贴吧数: 7
Netgear R7000通过网页降级固件失败解决办法分享 Netgear R7000"The firmware is not compatiable with your router. Error code -2." 解决办法 R7000-V1.0.9.34以后的固件无法通过网页降级到老固件。拆机焊上TTL杜邦针脚,用TTL连接电脑以后路由器右边6个灯常亮,无法正常开机,把TTL转接板从电脑上拔掉再试,就能正常开机了。 然后就想先开机,然后再连接TTL能不能获取到启动信息呢?具体流程如下: 一、将电脑用网线连接到路由器的任意一个LAN口,电脑里将网口设置成固定IP,默认子网掩码,网关设置成路由器的IP; 二、将TTL转接板插入电脑USB接口中,先把主板上的3脚(RX)、4脚(TX)杜邦线连接上; 三、电脑在控制面板中开启“TFTP客户端”功能,安装TTL转接板驱动和putty软件; 四、打开putty软件,输入TTL串口号(可在设备管理器中查找),Speed输入“115200”,Data bits输入“8”和Stop bits输入“1”,Parity和FLow control都选“None”,点击最下面的Open; 五、给路由器通电,右边几个灯灭了以后再连接主板的2脚(GND),电脑上的putty能获取到启动信息!但是2脚连接时机有点晚,按Ctrl+C无法暂停启动,第二次又试了一下,右边几个灯灭的瞬间连接2脚,这次按Ctrl+C成功暂停启动,putty里提示符变成“cfe>”,进cfe成功,然后就是在putty中输入以下命令(启动tftp服务)并回车 tftpd 六、在电脑命令提示符中输入以下命令并回车 tftp -i 路由器IP地址 put 你想要刷入的固件.chk 稍等几分钟,成功刷入旧版驱动,问题解决。 我的是新版R7000,天线不可拆卸的那版,估计就是网上说的R7000V1新版,不知道是TTL转接板的原因,还是主板的原因,进个cfe还这么麻烦
学了四个月,自己刚写出第一个小游戏贪吃蛇 代码太长了,一层楼居然放不下,那就分两层放吧 对了,感谢K-Z 12-17-2009 at 12:53 PM.在LinuxQuestions分享的kbhit()函数方法,自己想了好久没想通,虽然都没看懂,但先用着再说 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <time.h> #define random(x) (rand()%(x)) #define MAXSIZEX 20 //地图多少"行" #define MAXSIZEY 50 //地图每"行"多"长" #define VOID 0 //空白 #define FOOD -1 //食物 #define WALL -2 //边界 #define HEAD 1 //蛇头 int count = 1; //记录蛇身长度 void MapInit(short *map); void MoveEat(short *map, short *px, short *py, char dir, short *pX, short *pY); void GetRan(short *X, short *Y); void PrintMap(short *map); int kbhit(void); int main() { short map[MAXSIZEX][MAXSIZEY] = {}; short X, Y, x, y; //食物和自身坐标 short speed = 1; char dir = 'd'; //w s a d分别为上下左右 char ch = ' '; srand((int)time(0)); MapInit(&map[0][0]); x = MAXSIZEX / 2; //初始化蛇头坐标 y = MAXSIZEY / 2; map[x][y] = HEAD; GetRan(&X, &Y); map[X][Y] = FOOD; printf("游戏速度(每秒前进多少步):"); while(!scanf("%hd", &speed)) { getchar(); } getchar(); while(dir != 'q' && dir != 'Q') { do { MoveEat(&map[0][0], &x, &y, dir, &X, &Y); PrintMap(&map[0][0]); printf("\n\n"); printf("当前得分:%d\n", count); printf("游戏说明:w s a d q分别为上下左右及退出键,按完后请加回车(按键在按下回车时对第一个有效字母作出响应)\n\n"); usleep(1000000 / speed); } while(!kbhit()); do { ch = getchar(); }while(ch != 'w' && ch != 'W' && ch != 's' && ch != 'S' && ch != 'a' && ch != 'A' && ch != 'd' && ch != 'D' && ch != 'q' && ch != 'Q'); //ch的有效性判断 if((count > 1) && ((((dir == 'w' || dir == 'W') && (ch == 's' || ch == 'S'))) || (((dir == 's' || dir == 'S') && (ch == 'w' || ch == 'W'))) || (((dir == 'a' || dir == 'A') && (ch == 'd' || ch == 'D'))) || (((dir == 'd' || dir == 'D') && (ch == 'a' || ch == 'A'))))) //当蛇身长度>1时不能调头 { ch = dir; } dir = ch; while((ch = getchar()) != '\n') { ; } } if(dir == 'q' || dir == 'Q') { printf("\t感谢您的本次使用,祝您生活愉快^_^\n\n"); } return 0; } void MapInit(short *map) { for(int X = 0; X < MAXSIZEX; X++) //初始化地图 { for(int Y = 0; Y < MAXSIZEY; Y++) { if(!X || !Y || X == MAXSIZEX - 1 || Y == MAXSIZEY - 1) { *(map+X*MAXSIZEY+Y) = WALL; } else { *(map+X*MAXSIZEY+Y) = VOID; } } } } void GetRan(short *X, short *Y) { do { *X = random(MAXSIZEX - 1); } while(!*X); do { *Y = random(MAXSIZEY - 1); } while(!*Y); } void PrintMap(short *map) { for(int i = 0; i < MAXSIZEX; i++) { printf("\t"); for(int j = 0; j < MAXSIZEY; j++) { if(*(map+i*MAXSIZEY+j) == WALL) { printf("口"); } else if(*(map+i*MAXSIZEY+j) == FOOD) { printf("田"); } else if(*(map+i*MAXSIZEY+j) == VOID) { printf(" "); } else if(*(map+i*MAXSIZEY+j) == HEAD) { printf("回"); } else { switch(*(map+i*MAXSIZEY+j)%10) { case 1: printf("一"); break; case 2: printf("二"); break; case 3: printf("三"); break; case 4: printf("四"); break; case 5: printf("五"); break; case 6: printf("六"); break; case 7: printf("七"); break; case 8: printf("八"); break; case 9: printf("九"); break; case 0: printf("十"); break; } } } printf("\n"); } return; }
约瑟夫问题的升级版,判断总是出错 这段代码由约瑟夫问题更改而来,只不过每次间隔个数是随机的(由被删除的结构中data数值决定),可是问题就是出现在倒数第十一行的m,把判断条件改成定值3程序就能正常完成,如果直接这样的代码编译,会出现segmentation fault ,pointer being freed was not allocated等等错误,这个该怎么修改才能正常啊 #include <stdio.h> #include <stdlib.h> #include <time.h> #define random(x) (rand()%x) #define N 41 //人数 #define M 23 //报数上限 struct List { int num; int data; struct List *next; }; struct List *CreatList(int n); void PrintList(struct List *head); void Suicide(struct List *head); int main(void) { srand((int)time(0)); struct List *head = CreatList(N); //PrintList(head); Suicide(head); return 0; } struct List *CreatList(int n) { struct List *temp; struct List *tail = (struct List *)malloc(sizeof(struct List)); struct List *head = tail; tail->num = n; for(int i = 1; i <= n; i++) { temp = (struct List *)malloc(sizeof(struct List)); temp->num = n - i; do { temp->data = random(M); }while(!(temp->data)); temp->next = head; head = temp; } do { tail->data = random(M); }while(!(tail->data)); tail->next = head->next; return head; } void PrintList(struct List *head) { struct List *temp = head->next; do { printf("%d\t", temp->num); printf("%d\n", temp->data); temp = temp->next; }while(temp != head->next); } void Suicide(struct List *head) { int count = 0; int m = head->next->data; struct List *temp = head; struct List *prior = NULL; while(1) { count++; prior = temp; temp = temp->next; if(temp->next == temp) { printf("号码为%2d的人自杀了!\t",temp->num); m = temp->data; printf("他的报数是%2d\n",m); prior->next = temp->next; free(temp); break; } if(count == m) { printf("号码为%2d的人自杀了!\t",temp->num); m = temp->data; printf("他的报数是%2d\n",m); prior->next = temp->next; free(temp); count = 0; } } }
1 下一页