lowermachine/source/linux_driver/encoder_drv_test/main.c
Miaow 4ecbc6a0ba feat(pl,drv): 添加了外部信号屏蔽相机触发的机制
1. pl端的encoder模块实现了可选的外部复位信号
2. pl端修改encoder模块的ENCODER_CR寄存器复位值,为仅限内部复位以及内部默认处于复位状态
3. 驱动层实现外部复位的开启和关闭功能,驱动open时退出默认的复位清零状态
   由于驱动程序已在open时退出复位状态,应用程序可不做更改,驱动程序close后不会自动切换回复位状态
4. 更新了驱动测试应用程序
2023-04-26 21:21:40 +08:00

78 lines
2.0 KiB
C

#include "encoder_dev.h"
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
static void sig_handler(int sig);
int main(int argc, char *argv[])
{
unsigned int a = 100, b = 100, c = 100, d = 100;
unsigned int divider = 0;
char which[32] = {0};
char clear_mode[32] = {0};
encoder_dev_init();
encoder_dev_set_trigmod(ENCODER_TRIG_MODE_EXTERNEL);
encoder_dev_set_divide(100, 100, 100, 100, 100);
signal(SIGINT, (sig_t)sig_handler);
while (1)
{
while (strcmp(clear_mode, "i") && strcmp(clear_mode, "ei"))
{
printf("clear mode(i/ei)? ");
scanf("%s", clear_mode);
}
if (strcmp(clear_mode, "i"))
{
encoder_dev_set_clrmod(ENCODER_CLEAR_MODE_INTERNAL);
}
else
{
encoder_dev_set_clrmod(ENCODER_CLEAR_MODE_BOTH);
}
while (strcmp(which, "a") && strcmp(which, "b") && strcmp(which, "c") && strcmp(which, "d") && strcmp(which, "all"))
{
printf("which camera(a/b/c/d/all)? ");
scanf("%s", which);
}
printf("divider value?(2~2^32-1)? ");
scanf("%ud", &divider);
if (strcmp(which, "a") == 0)
{
a = divider;
}
else if (strcmp(which, "b") == 0)
{
b = divider;
}
else if (strcmp(which, "c") == 0)
{
c = divider;
}
else if (strcmp(which, "d") == 0)
{
d = divider;
}
else if (strcmp(which, "all") == 0)
{
a = b = c = d = divider;
}
encoder_dev_set_divide(500, a, b, c, d);
printf("clear mode is %s, divider of camera %s is set to %d\r\n\r\n", clear_mode, which, divider);
which[0] = '\0';
clear_mode[0] = '\0';
}
}
static void sig_handler(int sig)
{
encoder_dev_set_trigmod(ENCODER_TRIG_MODE_INTERNEL);
encoder_dev_deinit();
printf("\r\n\r\nExisting...");
exit(0);
}