my_data.c
6.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
#include "math.h"
#include "hardware.h"
#include "Slam.h"
void ReadFromRom(void)//读FLASH
{
int ArealIndex=0;
u8 W25QXX_BUFFER[W25QXX_WRLength]; //写用数组
u8 i;
W25QXX_Read(W25QXX_BUFFER,100+ArealIndex*65536,W25QXX_WRLength);
if( (W25QXX_BUFFER[0]==0xAA) && ((W25QXX_BUFFER[W25QXX_WRLength-1]==Sum_Crc(W25QXX_BUFFER,W25QXX_WRLength-1,0))|Ceshi[26]) )
{
memcpy(F_Agvname,W25QXX_BUFFER+1,8);
memcpy(F_lwip.ip_Loca,W25QXX_BUFFER+9,4);
memcpy(F_lwip.netmask,W25QXX_BUFFER+13,4);
memcpy(F_lwip.gateway,W25QXX_BUFFER+17,4);
memcpy(&F_lwip.ip_Remo,W25QXX_BUFFER+21,4);
memcpy(&F_lwip.Port_Remo,W25QXX_BUFFER+25,2);
memcpy(&F_CharDir,W25QXX_BUFFER+27,1);
memcpy(&F_Dx_AgvCToMap,W25QXX_BUFFER+28,4);
memcpy(&F_Dy_AgvCToMap,W25QXX_BUFFER+32,4);
memcpy(&F_DAng_AgvCToMap,W25QXX_BUFFER+36,2);
memcpy(&F_OverrideGo_KZ,W25QXX_BUFFER+38,1);
memcpy(&F_OverrideGo_FZ,W25QXX_BUFFER+39,1);
memcpy(&F_OverrideUP,W25QXX_BUFFER+40,1);
memcpy(&F_OverrideDown,W25QXX_BUFFER+41,1);
memcpy(&CCD_M[0].X_Delta,W25QXX_BUFFER+42,1);
memcpy(&CCD_M[0].Y_Delta,W25QXX_BUFFER+43,1);
memcpy(&CCD_M[0].Ang_Delta,W25QXX_BUFFER+44,1);
memcpy(&F_WheelTy,W25QXX_BUFFER+45,1);
memcpy(&F_DirInstall_CCD,W25QXX_BUFFER+46,1);
memcpy(&F_OverrideConvey_A,W25QXX_BUFFER+47,1);
memcpy(&F_XDis_Helm,W25QXX_BUFFER+50,4);
memcpy(&F_YDis_Helm,W25QXX_BUFFER+54,4);
memcpy(&F_DX_ScanLaInstall,W25QXX_BUFFER+58,4);
memcpy(&F_DY_ScanLaInstall,W25QXX_BUFFER+62,4);
for(i=0;i<MaxMotNums;i++)
{ Motor[i].Y=VaIndexB_R(&W25QXX_BUFFER[66],i);}
//
// memcpy(&Motor[0].Y,W25QXX_BUFFER+66,1);
// memcpy(&Motor[5].Y,W25QXX_BUFFER+67,1);
memcpy(&F_AgvContr,W25QXX_BUFFER+68,4);
memcpy(&F_HighInit,W25QXX_BUFFER+72,2);
memcpy(&F_WeightInitVa,W25QXX_BUFFER+74,2);
memcpy(&Motor[0].PulseS_Unit,W25QXX_BUFFER+76,2);
memcpy(&Motor[0].Max_rpm,W25QXX_BUFFER+78,2);
memcpy(&Motor[1].PulseS_Unit,W25QXX_BUFFER+80,2);
memcpy(&Motor[1].Max_rpm,W25QXX_BUFFER+82,2);
memcpy(&Motor[2].PulseS_Unit,W25QXX_BUFFER+84,2);
memcpy(&Motor[2].Max_rpm,W25QXX_BUFFER+86,2);
memcpy(&Motor[5].PulseS_Unit,W25QXX_BUFFER+88,2);
memcpy(&Motor[5].Max_rpm,W25QXX_BUFFER+90,2);
memcpy(&HighMax,W25QXX_BUFFER+92,2);
memcpy(&Highmin,W25QXX_BUFFER+94,2);
memcpy(&F_WeightMax,W25QXX_BUFFER+96,2);
memcpy(&F_ConveyDir,W25QXX_BUFFER+98,1);
memcpy(&F_OverrideGo_M,W25QXX_BUFFER+99,1);
memcpy(&F_OverrideUD_M,W25QXX_BUFFER+100,1);
memcpy(&F_OverrideCW_M,W25QXX_BUFFER+101,1);
memcpy(&F_OverrideConvey_M,W25QXX_BUFFER+102,1);
memcpy(F_LaPic,W25QXX_BUFFER+103,8);
memcpy(&CCD_M[1].X_Delta,W25QXX_BUFFER+111,1);
memcpy(&CCD_M[1].Y_Delta,W25QXX_BUFFER+112,1);
memcpy(&CCD_M[1].Ang_Delta,W25QXX_BUFFER+113,1);
memcpy(&F_Music_Voice,W25QXX_BUFFER+114,1);
memcpy(&F_Ang_HelmZerToAgvX,W25QXX_BUFFER+115,2);
Set_ErrID(22,0);
}
else Set_ErrID(22,1);//ErrID=22;读取XML校验码错误
Value2Init();
/*调节偏差值*/
ArealIndex=1;
memset(W25QXX_BUFFER,0,W25QXX_WRLength);
W25QXX_Read(W25QXX_BUFFER,100+ArealIndex*65536,W25QXX_WRLength);
if( (W25QXX_BUFFER[0]==0xAA) && (W25QXX_BUFFER[W25QXX_WRLength-1]==Sum_Crc(W25QXX_BUFFER,W25QXX_WRLength-1,0)) )
{
memcpy(&F_AdjustPArr[0].Value,W25QXX_BUFFER+1,sizeof(F_AdjustPArr));
}
// printf("读取数据");
}
void WriteToRom(void)//写FLASH
{
int ArealIndex;
u8 W25QXX_BUFFER[W25QXX_WRLength]; //写用数组
u8 i;
ArealIndex=0;
memset(W25QXX_BUFFER,0,W25QXX_WRLength);
W25QXX_BUFFER[0]=0xAA;
memcpy(W25QXX_BUFFER+1,&F_Agvname,8);
memcpy(W25QXX_BUFFER+9,&F_lwip.ip_Loca,4);
memcpy(W25QXX_BUFFER+13,&F_lwip.netmask,4);
memcpy(W25QXX_BUFFER+17,&F_lwip.gateway,4);
memcpy(W25QXX_BUFFER+21,&F_lwip.ip_Remo,4);
memcpy(W25QXX_BUFFER+25,&F_lwip.Port_Remo,2);
memcpy(W25QXX_BUFFER+27,&F_CharDir,1);
memcpy(W25QXX_BUFFER+28,&F_Dx_AgvCToMap,4);
memcpy(W25QXX_BUFFER+32,&F_Dy_AgvCToMap,4);
memcpy(W25QXX_BUFFER+36,&F_DAng_AgvCToMap,2);
memcpy(W25QXX_BUFFER+38,&F_OverrideGo_KZ,1);
memcpy(W25QXX_BUFFER+39,&F_OverrideGo_FZ,1);
memcpy(W25QXX_BUFFER+40,&F_OverrideUP,1);
memcpy(W25QXX_BUFFER+41,&F_OverrideDown,1);
memcpy(W25QXX_BUFFER+42,&CCD_M[0].X_Delta,1);
memcpy(W25QXX_BUFFER+43,&CCD_M[0].Y_Delta,1);
memcpy(W25QXX_BUFFER+44,&CCD_M[0].Ang_Delta,1);
memcpy(W25QXX_BUFFER+45,&F_WheelTy,1);
memcpy(W25QXX_BUFFER+46,&F_DirInstall_CCD,1);
memcpy(W25QXX_BUFFER+47,&F_OverrideConvey_A,1);
memcpy(W25QXX_BUFFER+50,&F_XDis_Helm,4);
memcpy(W25QXX_BUFFER+54,&F_YDis_Helm,4);
memcpy(W25QXX_BUFFER+58,&F_DX_ScanLaInstall,4);
memcpy(W25QXX_BUFFER+62,&F_DY_ScanLaInstall,4);
for(i=0;i<MaxMotNums;i++)
{ VaIndexB_W(&W25QXX_BUFFER[66],i,Motor[i].Y);}
// memcpy(W25QXX_BUFFER+66,&Motor[0].Y,1);
// memcpy(W25QXX_BUFFER+67,&Motor[5].Y,1);
memcpy(W25QXX_BUFFER+68,&F_AgvContr,4);
memcpy(W25QXX_BUFFER+72,&F_HighInit,2);
memcpy(W25QXX_BUFFER+74,&F_WeightInitVa,2);
memcpy(W25QXX_BUFFER+76,&Motor[0].PulseS_Unit,2);
memcpy(W25QXX_BUFFER+78,&Motor[0].Max_rpm,2);
memcpy(W25QXX_BUFFER+80,&Motor[1].PulseS_Unit,2);
memcpy(W25QXX_BUFFER+82,&Motor[1].Max_rpm,2);
memcpy(W25QXX_BUFFER+84,&Motor[2].PulseS_Unit,2);
memcpy(W25QXX_BUFFER+86,&Motor[2].Max_rpm,2);
memcpy(W25QXX_BUFFER+88,&Motor[5].PulseS_Unit,2);
memcpy(W25QXX_BUFFER+90,&Motor[5].Max_rpm,2);
memcpy(W25QXX_BUFFER+92,&HighMax,2);
memcpy(W25QXX_BUFFER+94,&Highmin,2);
memcpy(W25QXX_BUFFER+96,&F_WeightMax,2);
memcpy(W25QXX_BUFFER+98,&F_ConveyDir,1);
memcpy(W25QXX_BUFFER+99,&F_OverrideGo_M,1);
memcpy(W25QXX_BUFFER+100,&F_OverrideUD_M,1);
memcpy(W25QXX_BUFFER+101,&F_OverrideCW_M,1);
memcpy(W25QXX_BUFFER+102,&F_OverrideConvey_M,1);
memcpy(W25QXX_BUFFER+103,F_LaPic,8);
memcpy(W25QXX_BUFFER+111,&CCD_M[1].X_Delta,1);
memcpy(W25QXX_BUFFER+112,&CCD_M[1].Y_Delta,1);
memcpy(W25QXX_BUFFER+113,&CCD_M[1].Ang_Delta,1);
memcpy(W25QXX_BUFFER+114,&F_Music_Voice,1);
memcpy(W25QXX_BUFFER+115,&F_Ang_HelmZerToAgvX,2);
W25QXX_BUFFER[W25QXX_WRLength-1]=Sum_Crc(W25QXX_BUFFER,W25QXX_WRLength-1,0);
W25QXX_EraserWrite(W25QXX_BUFFER,100+ArealIndex*65536,W25QXX_WRLength);
OSTimeDly(2);
/*调节偏差值*/
ArealIndex=1;
memset(W25QXX_BUFFER,0,W25QXX_WRLength);
W25QXX_BUFFER[0]=0xAA;
memcpy(W25QXX_BUFFER+1,&F_AdjustPArr[0].Value,sizeof(F_AdjustPArr));
W25QXX_BUFFER[W25QXX_WRLength-1]=Sum_Crc(W25QXX_BUFFER,W25QXX_WRLength-1,0);
W25QXX_EraserWrite(W25QXX_BUFFER,100+ArealIndex*65536,W25QXX_WRLength);
OSTimeDly(2);
}
u8 WRPB;
void WriteReadPersistent(void)//读写操控函数
{
if((Ceshi[27]==1)|((SysKey==245)&&VaIndexDW_R(&Touch_Contr,3)))
{ Ceshi[27]=0;
if(VaIndexB_R(&WRPB,1)==0)
{ WriteToRom();
VaIndexB_W(&WRPB,1,1);
}
}
else VaIndexB_W(&WRPB,1,0);
if( (Ceshi[28]==1)|((SysKey==245)&&VaIndexDW_R(&Touch_Contr,0)) )
{ Ceshi[28]=0;
if( VaIndexB_R(&WRPB,2)==0 )
{ ReadFromRom();
VaIndexB_W(&WRPB,2,1);
}
}
else VaIndexB_W(&WRPB,2,0);
}