##分からなこと
PICマイコンであるプログラムを作成していますが、
そのプログラムをビルドした際にでる「ワーニング」の原因と解決策が分からず、困っています。
##ワーニング
・変数i, x, dtについて、
ワーニング: (346) declaration of "x" hides outer declaration
・XBee_MakePacket10()関数内の計算式において、
ワーニング: (373) implicit signed to unsigned conversion
##プログラムコード
html
1int i , x ; 2char dt[36] ; 3char adrs[] = {0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF} ; // 相手XBeeのアドレス 4 5void main(void) { 6 OSCCON=0x72; //PLL Disable/8MHz 7 ANSELA=0x04; //RA2 Analog Setting 8 ANSELC=0x00; //PORTC Digital Setting 9 TRISA=0x04; //RA2 Input 10 TRISC=0x28; //RC5, RC3 Input 11 LATC=0x00; 12 13 RXDTSEL = 0; 14 TXCKSEL = 0; 15 TXSTA = 0x24; //非同期/8ビット/パリティなし 16 RCSTA = 0x90; //シリアルポート使用/連続受信あり 17 BAUDCON = 0x00; // 8bit mode 18 SPBRGH = 0x00; //上位8bit 19 SPBRGL = 0x33; //下位8bit 20 21 while(1){ 22 i = XBee_MakePacket10(dt,adrs,"test",4) ; 23 x = XBee_SendPacket10(dt,i,0) ; 24 __delay_ms(5000); 25 } 26} 27 28 29void UART_Send(const char *dt,int num) 30{ 31 int a ; 32 for (a = 0 ; a < num ; a++) { 33 while(TXIF == 0) ; // 送信可能になるまで待つ 34 TXREG = *dt++ ; // 送信する 35 } 36} 37 38 39char XBee_CheckSum_Make(char *packet_dt,int len) 40{ 41 int i , c , x ; 42 43 c = len - 4 ; 44 x = 0 ; 45 packet_dt = packet_dt + 3 ; // 4バイト目から開始 46 for (i = 0 ; i < c ; i++) { 47 x = x + *packet_dt ; 48 packet_dt++ ; 49 } 50 x = 0xff - (x & 0xff) ; 51 return (unsigned int) x ; // 計算したチェックサム値を返す 52} 53 54 55int XBee_MakePacket10(char *packet_dt, const char *adrs, const char *data, int num) 56{ 57 int x , i ; 58 59 packet_dt[0] = 0x7E ; // 開始コード 60 x = num + 14 ; 61 packet_dt[1] = (unsigned int)(x / 256) ; // フレームデータの長さ 62 packet_dt[2] = (unsigned int)(x % 256) ; 63 packet_dt[3] = 0x10 ; // フレームタイプ 64 packet_dt[4] = 0x00 ; // フレームID 65 for (i = 5 ; i < 13 ; i++) { 66 packet_dt[i] = *adrs ; // 送信先の64ビットアドレス 67 adrs++ ; 68 } 69 packet_dt[13] = 0xFF ; // 送信先の16ビットアドレス 70 packet_dt[14] = 0xFE ; 71 packet_dt[15] = 0x00 ; // 最大ホップ数 72 packet_dt[16] = 0x00 ; // 送信オプション 73 for (i = 0 ; i < num ; i++) { 74 packet_dt[17+i] = *data ; // 送信するデータ 75 data++ ; 76 } 77 i = 17 + num ; 78 x = i + 1 ; 79 packet_dt[i] =XBee_CheckSum_Make(packet_dt,x) ; // チェックサム 80 81 return x ; // 作成したパケットの長さを返す 82} 83 84 85int XBee_SendPacket10(char *packet_dt,int len,int sw) 86{ 87 if (sw == 0) { 88 UART_Send(packet_dt,len) ; 89 } 90}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/27 05:56
2019/08/27 06:20
2019/08/27 07:47
2019/08/27 07:56
2019/08/27 08:04
2019/08/27 08:19
2019/08/28 00:51
2019/08/28 01:16
2019/08/28 01:39
2019/08/28 01:43
2019/08/28 01:52
2019/08/28 02:24
2019/08/28 02:33 編集
2019/08/28 03:15
2019/08/28 03:18
2019/08/28 03:33