📄 iommaster0.c
字号:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>#include <unistd.h>#include "APAC_IOM.h"int HexStringToByteArray(char *string, unsigned char *array, int arraySize);char *strupr(char *string);void PrintBuffer(unsigned char *buffer, int len);int main(int argc, char *argv[]){ int ret; bool detected; char modelNum[10]; char serialNum[16]; unsigned short firmwareVersion; int numSais, numDins, numRlys, numDouts; int devId, index, state, duration; int boundaries[3]; int mode; int numEvents; bool moreEvents; APAC_IOM_Event events[64]; unsigned char masterKey[16]; unsigned char slaveKey[16]; char line[512]; int inputNum; int i, j; if (argc < 2) { printf("Usage: iommaster <baud rate>\n"); return 1; } ret = APAC_IOM_Init(atoi(argv[1])); if (ret != APAC_IOM_NOERR) { printf("iommaster: APAC_IOM_Initialize failed with error 0x%x\n", ret); return 1; } inputNum = -1; while (inputNum != 0) { printf("APAC IOM Master Test Program\n\n"); printf(" 1. APAC_IOM_SetSessionKey\n"); printf(" 2. APAC_IOM_GetInfo\n"); printf(" 3. APAC_IOM_GetConfig\n"); printf(" 4. APAC_IOM_GetSaiState\n"); printf(" 5. APAC_IOM_SetSaiBoundaries\n"); printf(" 6. APAC_IOM_GetDinState\n"); printf(" 7. APAC_IOM_SetDinMode\n"); printf(" 8. APAC_IOM_SetRlyState\n"); printf(" 9. APAC_IOM_SetDoutState\n"); printf("10. APAC_IOM_QueryEvents\n"); printf("11. APAC_IOM_InitKey\n"); printf(" 0. Exit\n\n"); printf("Enter a number: "); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); if (sscanf(line, "%d", &inputNum) != 1) inputNum = -1; switch (inputNum) { case 1: // APAC_IOM_SetSessionKey devId = 1; printf("Enter device ID [%d]: ", devId); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); sscanf(line, "%d", &devId); printf("iommaster: devId: %d\n", devId); printf("iommaster: Starting APAC_IOM_SetSessionKey...\n"); ret = APAC_IOM_SetSessionKey(devId); if (ret != APAC_IOM_NOERR) printf("iommaster: APAC_IOM_SetSessionKey failed with error 0x%x\n", ret); else { detected = false; APAC_IOM_IsDetected(devId, &detected); printf("iommaster: detected: %s\n", detected ? "Yes" : "No"); } printf("iommaster: Ending APAC_IOM_SetSessionKey...\n"); break; case 2: // APAC_IOM_GetInfo devId = 1; printf("Enter device ID [%d]: ", devId); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); sscanf(line, "%d", &devId); printf("iommaster: devId: %d\n", devId); printf("iommaster: Starting APAC_IOM_GetInfo...\n"); ret = APAC_IOM_GetInfo(devId); if (ret != APAC_IOM_NOERR) printf("iommaster: APAC_IOM_GetInfo failed with error 0x%x\n", ret); else { memset(modelNum, 0, sizeof(modelNum)); APAC_IOM_GetModelNum(devId, modelNum); memset(serialNum, 0, sizeof(serialNum)); APAC_IOM_GetSerialNum(devId, serialNum); firmwareVersion = 0; APAC_IOM_GetFirmwareVersion(devId, &firmwareVersion); printf("iommaster: Model Number : %s\n", modelNum); printf("iommaster: Serial Number : %s\n", serialNum); printf("iommaster: Firmware Version: 0x%04x\n", firmwareVersion); } printf("iommaster: Ending APAC_IOM_GetInfo...\n"); break; case 3: // APAC_IOM_GetConfig devId = 1; printf("Enter device ID [%d]: ", devId); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); sscanf(line, "%d", &devId); printf("iommaster: devId: %d\n", devId); printf("iommaster: Starting APAC_IOM_GetConfig...\n"); ret = APAC_IOM_GetConfig(devId); if (ret != APAC_IOM_NOERR) printf("iommaster: APAC_IOM_GetConfig failed with error 0x%x\n", ret); else { numSais = 0; numDins = 0; numRlys = 0; numDouts = 0; APAC_IOM_GetNumSais(devId, &numSais); APAC_IOM_GetNumDins(devId, &numDins); APAC_IOM_GetNumRlys(devId, &numRlys); APAC_IOM_GetNumDouts(devId, &numDouts); printf("iommaster: Number of SAIs : %d\n", numSais); printf("iommaster: Number of DINs : %d\n", numDins); printf("iommaster: Number of RLYs : %d\n", numRlys); printf("iommaster: Number of DOUTs: %d\n", numDouts); } printf("iommaster: Ending APAC_IOM_GetConfig...\n"); break; case 4: // APAC_IOM_GetSaiState devId = 1; index = 0; printf("Enter device ID [%d]: ", devId); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); sscanf(line, "%d", &devId); printf("Enter index [%d]: ", index); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); sscanf(line, "%d", &index); printf("iommaster: devId: %d, index: %d\n", devId, index); printf("iommaster: Starting APAC_IOM_GetSaiState...\n"); ret = APAC_IOM_GetSaiState(devId, index, &state); if (ret != APAC_IOM_NOERR) printf("iommaster: APAC_IOM_GetSaiState failed with error 0x%x\n", ret); else printf("iommaster: state: %d\n", state); printf("iommaster: Ending APAC_IOM_GetSaiState...\n"); break; case 5: // APAC_IOM_SetSaiBoundaries devId = 1; printf("Enter device ID [%d]: ", devId); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); sscanf(line, "%d", &devId); for (i = 0; i < 8; i++) { memset(boundaries, 0, sizeof(boundaries)); printf("SAI %d:\n", i); for (j = 0; j < 3; j++) { printf("Enter boundaries %d (0 = disable) [%d]: ", j, boundaries[j]); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); sscanf(line, "%d", &boundaries[j]); if (boundaries[j] == 0) break; } APAC_IOM_UpdateSaiBoundaries(devId, i, boundaries); } printf("iommaster: devId: %d\n", devId); for (i = 0; i < 8; i++) { APAC_IOM_GetSaiBoundaries(devId, i, boundaries); printf("iommaster: SAI %d: ", i); for (j = 0; j < 3; j++) printf("boundaries %d: %d ", j, boundaries[j]); printf("\n"); } printf("iommaster: Starting APAC_IOM_SetSaiBoundaries...\n"); ret = APAC_IOM_SetSaiBoundaries(devId); if (ret != APAC_IOM_NOERR) printf("iommaster: APAC_IOM_SetSaiBoundaries failed with error 0x%x\n", ret); printf("iommaster: Ending APAC_IOM_SetSaiBoundaries...\n"); break; case 6: // APAC_IOM_GetDinState devId = 1; index = 0; printf("Enter device ID [%d]: ", devId); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); sscanf(line, "%d", &devId); printf("Enter index [%d]: ", index); memset(line, 0, sizeof(line)); fgets(line, sizeof(line), stdin); sscanf(line, "%d", &index); printf("iommaster: devId: %d, index: %d\n", devId, index); printf("iommaster: Starting APAC_IOM_GetDinState...\n"); ret = APAC_IOM_GetDinState(devId, index, &state); if (ret != APAC_IOM_NOERR) printf("iommaster: APAC_IOM_GetDinState failed with error 0x%x\n", ret); else printf("iommaster: state: %d\n", state);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -