void show_mesg(void) { /* LCD显示实验信息 / lcd_show_string(10,180, 220, 16, 32, "miaogaopeng", BLUE); lcd_show_string(150,40, 220, 16, 16, "mm", BLUE); lcd_show_string(150,115, 220, 16, 16, "mm", BLUE); lcd_show_string(10,40, 100, 16, 16, "critical:", BLUE); lcd_show_string(10,115, 100, 16, 16, "distance:", BLUE); lcd_show_string(10,77, 100, 16, 16, "vehicle :", BLUE); lcd_show_string(10,145, 100, 16, 16, "ID :", BLUE); } int main(void) { HAL_Init(); / 初始化HAL库 / sys_stm32_clock_init(RCC_PLL_MUL9); / 设置时钟, 72Mhz / delay_init(72); / 延时初始化 / usart_init(115200); / 串口初始化为115200 / led_init(); / 初始化LED / key_init(); / 初始化按键 / lcd_init(); / 初始化LCD / show_mesg(); / 显示实验信息 / demo_run(); / 运行demo程序 */ } void demo_run(void) { uint8_t ret; uint8_t key; uint16_t id; uint8_t is_normal = 0; ret = atk_ms53l0m_init(115200, &id); //初始化ATK-MS53L0M并将波特率设置为115200// if (ret != 0) { printf("ATK-MS53L0M init failed!\r\n"); //输出初始化失败信息// while (1) { LED0_TOGGLE(); //闪烁led灯// delay_ms(200); } } while (1) { key = key_scan(0); //扫描按键信息// switch (key) { case KEY0_PRES: //按下KEY0// { demo_key0_fun(is_normal, id); //运行测量输出程序// break; } case KEY1_PRES: //按下KEY1// { { id=id+1; //增加地址id// lcd_show_num(80, 150, kid, 8, 12, BLUE); printf("%d", id); //LED和串口显示// } break; } case WKUP_PRES: //按下WK_UP// { { kid=kid-1; //减少地址id// lcd_show_num(80, 150, kid, 8, 12, BLUE); printf("%d", id); //LED和串口显示// } break; } default: { break; } } delay_ms(10); } }
时间: 2023-06-23 12:09:57 浏览: 164
这是一段嵌入式系统的C语言代码,主要实现了以下功能:
1. 初始化HAL库、时钟、延时、串口、LED、按键和LCD等模块;
2. 显示实验信息;
3. 初始化ATK-MS53L0M,并将波特率设置为115200;
4. 通过扫描按键信息来运行测量输出程序、增加地址ID或减少地址ID。
其中,ATK-MS53L0M是一种ToF(Time of Flight)激光雷达传感器,用于测量距离。这段代码通过与ATK-MS53L0M通信来获取距离数据,并在LCD上显示出来,同时通过LED和串口输出显示。
相关问题
kernel open()失败,如何打印失败信息,err_mesg()吗
当你在Linux内核编程中使用`open()`函数打开一个文件时,如果发生失败,内核通常会返回一个错误码,这个错误码对应着一个描述性错误信息,称为“error message”或“message of error”。要获取这个错误信息,内核提供了一个宏`__printk(KERN_ERR "your_function_name(): %d - %s\n", errno, strerror(errno))`,其中`errno`是保存错误码的地方,`strerror()`是一个标准库函数,将错误码转换成对应的英文错误描述。
在使用`err_msg()`类似函数(实际上没有这个命名的标准函数,可能是某个库提供的自定义函数)的情况下,你需要查阅该库的文档来确定确切的用法。但一般来说,它应该接受错误码作为参数,然后返回或打印出相应的错误消息。
在处理这种情况时,你应该捕获到`open()`的返回值(即错误码),然后通过上述方式打印失败信息,以便调试。示例代码如下:
```c
int fd = open("your_file", O_RDONLY);
if (fd < 0) {
int err_num = errno;
char* error_desc = strerror(err_num);
printk(KERN_ERR "open('your_file'): %d - %s\n", err_num, error_desc);
}
```
public void setServletResponse(HttpServletResponse response) { // TODO Auto-generated method stub this.response = response; } @Override public void setServletRequest(HttpServletRequest request) { // TODO Auto-generated method stub this.request = request; } @Override public void setSession(Map<String, Object> session) { this.session = (SessionMap<String, Object>) session; } public void render(String mesg){ try { response.setContentType("text/html;charset=UTF-8"); response.getWriter().print(mesg); response.getWriter().flush(); response.getWriter().close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void renderJsonpString(String mesg){ Map obj = new HashMap(); obj.put("info", mesg); String callbackFunctionName = request.getParameter("callback"); try { response.setContentType("text/html;charset=UTF-8"); response.getWriter().print(callbackFunctionName+"("+gson.toJson(obj)+")"); response.getWriter().flush(); response.getWriter().close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
这是一个 Java 类中的一些方法和属性。它实现了三个接口:ServletResponseAware、ServletRequestAware和SessionAware,并且包含了两个自定义的方法:render和renderJsonpString。
在这个类中,setServletResponse、setServletRequest和setSession方法被重写,这些方法会在 Struts2 框架中调用,用于获取相应的 HTTP 请求和响应对象以及会话信息。
render方法将一个字符串作为参数,并将其写入响应对象中,这个方法可以用来向客户端返回 HTML 或文本数据。
renderJsonpString方法也是将一个字符串作为参数,但它首先将这个字符串放入一个 Map 对象中,并将这个 Map 对象转换成 JSON 格式的字符串。然后,它会从 HTTP 请求参数中获取一个名为 "callback" 的值,这个值代表了一个回调函数的名称。最后,它将 JSON 格式的字符串和回调函数的名称拼接起来,并将结果写入响应对象中,返回给客户端。这个方法通常用于实现跨域请求。
阅读全文