早上好。有没有办法用 Capl 读取 .csv 文件。谢谢
我有一个 .csv 文件,我想用 capl 阅读它。接下来我想创建一个矩阵,其中包含服务的不同子功能。该子功能位于 .csv 文件中
更新来自评论(@Fravadona)
csv 文件的一部分:
Long Name,Values
Engine Speed,"34, 4096, 5"
Vehicle Speed,"34, 4098, 4"
Battery Voltage,"34, 4100, 4"
我还写了这个capl
variables {
message 0x18DA1AF1x UDS_REQ;
message 0x18DAF11Ax UDS_RES;
message 0x18DBFEF1x UDS_REQ_FUNC;
byte session[3] = {0x01, 0x02, 0x03};
int lunghezza_session = 3;
int num_RDI = 3;
byte vettoreRDI[187][3]; //le righe sono 187 e lo posso vedere direttamente dal file csv creato
dword handle_file;
char buffer[300]; //area di memoria dove salvo le righe del file .csv che sto leggendo
int j; //indice per ripulire la stringa da caratteri speciali
int i; //indice per cicli for
}
on preStart {
handle_file = openFileRead("data_identifiers.csv", 0, 65001);
if (handle_file == 0) {
write("Errore durante l'apertura del file");
} else {
write("File aperto con successo!");
while (fileGetString(buffer, elcount(buffer), handle_file) != 0) {
char nuovaRiga[300];
write ("%s", buffer);
str_replace(buffer, "," , " ");
j = 0;
for(i = 0; i < strlen(buffer); i++){
if (buffer[i] != '\"') {
nuovaRiga[j] = buffer[i];
j++;
}
}
}
}
}
现在我想将第二个数值保存在数组中,然后我可以使用它进行下一步操作
使用纯 C,您可以使用
sscanf
来解析 Long Name
和 Values
:
char name[300];
int val1, val2, val3;
sscanf(buffer, "%[^,],\"%d, %d, %d\"", &name, &val1, &val2, &val3);