前些天总是有些想法,真希望能实现

1 篇文章 0 订阅
1 篇文章 0 订阅
工作了相当长的一段时间后,感觉自己越来越懒了,但是总觉得自己还可以以更加轻松的方式完成客户的需求。
如果我们积累了一定的项目经验、一定的编码量后,我想大家应该会有一种感觉(尤其是在一些国内的中小软件公司):会感到目前的一些工作有一种似曾相识感觉。
比如:我们不停的根据需求在为客户创建表/视图,然后,要做一些界面,然后完成一些逻辑功能。
虽然我们每个人可能都会有这种感觉,但是由于很多的原因(历史原因、一些客观原因,或是人的天生有一种偷懒的本性),我们最终还是一次又一次的再重复类似以前的工作,因为会觉得这样方便快捷、不需要懂什么脑筋。
不过,偶一直在在想:我至少现在还算是年轻,所以多多动动头脑、多多实践还是对身体有益的(听说可以益寿延年,赫赫),所以就想把以前一直有的一些想法变成现实。

下边是一些想法(要是认为火星的话,还望指点一二,TIA):

1) 对于有一定规模的产品或是项目来说,查询、统计等操作是少不了的,同样报表系统(这里应该能提供各种查询、统计的呈现)应该会是一个相当重要的部分。
这时候,可能很多人都会说:我们的项目/产品已经有一套比较完善的报表系统了,其他开发人员只需要调用接口就行了。也对,我相信很多人都会这么想,因为这样看上去似乎已经相当完美了。但是,我个人认为,如果实现到这种程度,从某种意义上说,我们的代码逻辑和Model还是耦合相当大的,因为,如果要修改的话,我们可能得去找相应的调用接口的地方,然后去修改代码。如果是从自己一个人的角度考虑,可能觉得这个不是问题,可能觉得每次修改也不会有多少压力,但是,我想我们其实有一种个好的解决方法(详见“个人的一些想法”部分)。
同样的道理,还有查询操作(这里指所有的涉及到类似从数据库中选择数据的SELECT操作,这些操作可能只是一个中间结果,不是最终呈现给用户的),我们往往认为在程序中为各个不同的需求写SQL语句是很天经地义的事情。
“个人的一些想法”:首先,这个想法不是针对某一样技术(Java或是.NET),而是想统一各种实现技术。在报表系统这里,如果提供对XML的支持(当然规则可能需要一些特殊的规定),在客户端(这里指其他调用此部分功能的开发人员)就只需要配置相应的配置项,而不作任何其他的额外的操作,就可以直接得到想要的报表,这样应该比较省事、而且安全,而且如果可以在此基础上实现个性化、国际化等相关技术的话可能就更好了。同样道理,我们在程序中如果要使用查询操作,也只需要配置XML就能通过接口得到结果。
在呈现方面,.NET可能已经帮我们做了很多工作,相对实现比较简单(不过,如果要实现一个功能比较强的,需要花的功夫也应该相当大的)。

2) 同样,既然我们如果能做到查询的统一,一些录入(包括INSERT、UPDATE、DELETE等)功能的实现也应该能做到统一。换句话说,我们只需要在自己的程序中写很少的代码(很可能就只有一行),就能实现我们想要的录入功能。如果可能的话,我们再通过设计自己负责部分的程序,再抽象一层,把这些(一些针对具体资源的功能)也作为配置的一部分,那样我们的代码可能就更加少了。

3)待续……

当然上述所涉及到的XML配置,应该是:规则尽量简单、易懂。

累了,该休息一下了,有时间再继续另外的一些想法(SQL等方面的想法)。

如果,你能把这些看完,而且还清楚我要表达的,那就说明我的语文还行;否则就需要去补习语文了 :)

最后,如果各位有什么好的想法,希望能不惜你们的脑细胞和敲键盘的力气,share一下。
好的,下面是一个更详细的实现步骤: 1. 存储电影信息:你可以使用STM32的Flash存储器来存储电影信息。在STM32中,Flash存储器被分成许多扇区,每个扇区的大小为1KB、2KB或4KB,你可以将电影信息存储在其中一个扇区中。在程序启动时,你需要读取Flash存储器中的电影信息,并将其存储在一个数组中。例如: ``` #define MOVIE_INFO_ADDR 0x0800F800 typedef struct { char name[20]; char time[10]; char hall[10]; } Movie; Movie movies[5]; void read_movie_info(void) { uint32_t addr = MOVIE_INFO_ADDR; for (int i = 0; i < 5; i++) { memcpy(&movies[i], (void*)addr, sizeof(Movie)); addr += sizeof(Movie); } } ``` 这里定义了一个包含5个电影信息的数组,并定义了一个函数read_movie_info(),用于读取Flash存储器中的电影信息。 2. 显示电影信息:你可以使用STM32的LCD驱动程序来控制LCD显示屏的显示。在STM32中,常用的LCD显示屏有16x2字符LCD和128x64点阵LCD。你需要根据所使用的LCD显示屏的类型,选择相应的LCD驱动程序库,并编写相应的显示函数。例如,你可以使用16x2字符LCD,并使用STM32的HAL库来控制其显示。一个简单的显示函数如下: ``` #include "lcd.h" void display_movie_info(int index) { char buf[20]; lcd_clear(); lcd_puts("Movie: "); lcd_puts(movies[index].name); lcd_gotoxy(0, 1); lcd_puts("Time: "); lcd_puts(movies[index].time); lcd_gotoxy(0, 2); lcd_puts("Hall: "); lcd_puts(movies[index].hall); } ``` 这里定义了一个显示函数display_movie_info(),用于显示电影信息。该函数使用了一个16x2字符LCD,并使用STM32的HAL库来控制其显示。 3. 用户选择电影:你可以使用STM32的GPIO输入功能,让用户选择他想要观看的电影。在STM32中,GPIO输入功能通常用来读取按键输入。例如,你可以使用4个按键,让用户选择电影。在用户选择完电影后,你需要将电影信息存储在STM32的RAM中。例如: ``` #define KEY0_GPIO_PORT GPIOA #define KEY0_GPIO_PIN GPIO_PIN_0 #define KEY1_GPIO_PORT GPIOA #define KEY1_GPIO_PIN GPIO_PIN_1 #define KEY2_GPIO_PORT GPIOA #define KEY2_GPIO_PIN GPIO_PIN_2 #define KEY3_GPIO_PORT GPIOA #define KEY3_GPIO_PIN GPIO_PIN_3 void movie_select(void) { int index = 0; while (1) { display_movie_info(index); if (HAL_GPIO_ReadPin(KEY0_GPIO_PORT, KEY0_GPIO_PIN) == GPIO_PIN_RESET) { index = 0; } else if (HAL_GPIO_ReadPin(KEY1_GPIO_PORT, KEY1_GPIO_PIN) == GPIO_PIN_RESET) { index = 1; } else if (HAL_GPIO_ReadPin(KEY2_GPIO_PORT, KEY2_GPIO_PIN) == GPIO_PIN_RESET) { index = 2; } else if (HAL_GPIO_ReadPin(KEY3_GPIO_PORT, KEY3_GPIO_PIN) == GPIO_PIN_RESET) { index = 3; } else { continue; } memcpy((void*)0x20000000, &movies[index], sizeof(Movie)); break; } } ``` 这里定义了一个函数movie_select(),用于让用户选择电影。该函数使用了4个按键,并使用STM32的HAL库来读取按键输入。在用户选择完电影后,将所选择的电影信息存储在STM32的RAM中。 4. 打印电影票:你可以使用STM32的串口发送功能,将电影信息逐个字符地发送到串口。在STM32中,常用的串口有USART和UART两种类型。你需要根据所使用的串口类型,选择相应的串口发送函数,并编写相应的发送函数。例如,你可以使用USART1串口,并使用STM32的HAL库来控制其发送。一个简单的发送函数如下: ``` #include "usart.h" void print_movie_ticket(void) { char buf[64]; sprintf(buf, "Movie: %s\r\n", ((Movie*)0x20000000)->name); HAL_UART_Transmit(&huart1, (uint8_t*)buf, strlen(buf), 100); sprintf(buf, "Time: %s\r\n", ((Movie*)0x20000000)->time); HAL_UART_Transmit(&huart1, (uint8_t*)buf, strlen(buf), 100); sprintf(buf, "Hall: %s\r\n", ((Movie*)0x20000000)->hall); HAL_UART_Transmit(&huart1, (uint8_t*)buf, strlen(buf), 100); } ``` 这里定义了一个发送函数print_movie_ticket(),用于将电影信息打印到串口。该函数使用了USART1串口,并使用STM32的HAL库来控制其发送。 以上是一个简单的电影院购票机的详细实现步骤。当然,具体实现方法取决于你所使用的STM32型号和硬件设备。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值