使用 capl 读取文件

问题描述 投票:0回答:1

早上好。有没有办法用 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++;
        }
      }
    }
  }
}

现在我想将第二个数值保存在数组中,然后我可以使用它进行下一步操作

csv capl
1个回答
0
投票

使用纯 C,您可以使用

sscanf
来解析
Long Name
Values
:

char name[300];
int val1, val2, val3;

sscanf(buffer, "%[^,],\"%d, %d, %d\"", &name, &val1, &val2, &val3);
© www.soinside.com 2019 - 2024. All rights reserved.