Просмотр исходного кода

【修改】坐标取值范围

SummerGift 6 лет назад
Родитель
Сommit
5bdbacbedc
2 измененных файлов с 11 добавлено и 11 удалено
  1. 4 4
      docs/04-Hardware_Control_Module/06-machine-LCD.md
  2. 7 7
      port/machine_lcd.c

+ 4 - 4
docs/04-Hardware_Control_Module/06-machine-LCD.md

@@ -2,7 +2,7 @@
 
 **machine.LCD** 类是 machine 模块下面的一个硬件类,用于对 LCD 的配置和控制,提供对 LCD 设备的操作方法。
 
-IoT board 板载一块 1.3 寸,分辨率为 `240*240` 的 LCD 显示屏,因此对该屏幕操作时,(x, y)  坐标的范围是 0 - 240
+IoT board 板载一块 1.3 寸,分辨率为 `240*240` 的 LCD 显示屏,因此对该屏幕操作时,(x, y)  坐标的范围是 `0 - 239`
 
 ### 构造函数
 
@@ -31,7 +31,7 @@ WHITE BLACK BLUE BRED GRED GBLUE RED MAGENTA GREEN CYAN YELLOW BROWN BRRED GRAY
 
 向指定的位置(x, y)画点,点的颜色为 color 指定的颜色,可指定的颜色和上一个功能相同。
 
-注意:(x, y)  坐标的范围是 0 - 240,使用下面的方法对坐标进行操作时同样需要遵循此限制。
+注意:(x, y)  坐标的范围是 0 - 239,使用下面的方法对坐标进行操作时同样需要遵循此限制。
 
 #### **LCD.text**(str, x, y, size)
 
@@ -64,8 +64,8 @@ lcd.pixel(50, 50, lcd.BLUE) # 将(50,50)位置的像素填充为蓝色
 lcd.text("hello RT-Thread", 0, 0, 16)   # 在(0, 0) 位置以 16 字号打印字符串
 lcd.text("hello RT-Thread", 0, 16, 24)  # 在(0, 16)位置以 24 字号打印字符串
 lcd.text("hello RT-Thread", 0, 48, 32)  # 在(0, 48)位置以 32 字号打印字符串
-lcd.line(0, 50, 240, 50)    # 以起点(0,50),终点(240,50)画一条线
-lcd.line(0, 50, 240, 50)    # 以起点(0,50),终点(240,50)画一条线
+lcd.line(0, 50, 239, 50)    # 以起点(0,50),终点(239,50)画一条线
+lcd.line(0, 50, 239, 50)    # 以起点(0,50),终点(239,50)画一条线
 lcd.rectangle(100, 100, 200, 200) # 以左上角为(100,100),右下角(200,200)画矩形
 lcd.circle(150, 150, 80)    # 以圆心位置(150,150),半径为 80 画圆
 ```

+ 7 - 7
port/machine_lcd.c

@@ -97,7 +97,7 @@ STATIC mp_obj_t machine_lcd_pixel(size_t n_args, const mp_obj_t *args) {
     int x = mp_obj_get_int(args[1]);
     int y = mp_obj_get_int(args[2]);
     
-    error_check((x >= 0 && x <= 240) && (y >= 0 && y <= 240) , "The min/max X/Y coordinates is 0/240");
+    error_check((x >= 0 && x <= 239) && (y >= 0 && y <= 239) , "The min/max X/Y coordinates is 0/239");
 
     int col = mp_obj_get_int(args[3]);
     lcd_draw_point_color(x, y, col);
@@ -119,7 +119,7 @@ STATIC mp_obj_t machine_lcd_text(size_t n_args, const mp_obj_t *args) {
     int y = mp_obj_get_int(args[3]);
     int size = mp_obj_get_int(args[4]);
     
-    error_check((x >= 0 && x <= 240) && (y >= 0 && y <= 240) , "The min/max X/Y coordinates is 0/240");
+    error_check((x >= 0 && x <= 239) && (y >= 0 && y <= 239) , "The min/max X/Y coordinates is 0/239");
     
     error_check(size == 16 || size == 24 || size == 32, "lcd only support font size 16 24 32");
     
@@ -142,8 +142,8 @@ STATIC mp_obj_t machine_lcd_line(size_t n_args, const mp_obj_t *args) {
     int x2 = mp_obj_get_int(args[3]);
     int y2 = mp_obj_get_int(args[4]);
     
-    error_check((x1 >= 0 && x1 <= 240) && (y1 >= 0 && y1 <= 240) , "The min/max X/Y coordinates is 0/240");
-    error_check((x2 >= 0 && x2 <= 240) && (y2 >= 0 && y2 <= 240) , "The min/max X/Y coordinates is 0/240");
+    error_check((x1 >= 0 && x1 <= 239) && (y1 >= 0 && y1 <= 239) , "The min/max X/Y coordinates is 0/239");
+    error_check((x2 >= 0 && x2 <= 239) && (y2 >= 0 && y2 <= 239) , "The min/max X/Y coordinates is 0/239");
 
     lcd_draw_line(x1, y1, x2, y2);
     return mp_const_none;
@@ -163,8 +163,8 @@ STATIC mp_obj_t machine_lcd_rectangle(size_t n_args, const mp_obj_t *args) {
     int x2 = mp_obj_get_int(args[3]);
     int y2 = mp_obj_get_int(args[4]);
 
-    error_check((x1 >= 0 && x1 <= 240) && (y1 >= 0 && y1 <= 240) , "The min/max X/Y coordinates is 0/240");
-    error_check((x2 >= 0 && x2 <= 240) && (y2 >= 0 && y2 <= 240) , "The min/max X/Y coordinates is 0/240");
+    error_check((x1 >= 0 && x1 <= 239) && (y1 >= 0 && y1 <= 239) , "The min/max X/Y coordinates is 0/239");
+    error_check((x2 >= 0 && x2 <= 239) && (y2 >= 0 && y2 <= 239) , "The min/max X/Y coordinates is 0/239");
 
     lcd_draw_rectangle(x1, y1, x2, y2);
     return mp_const_none;
@@ -183,7 +183,7 @@ STATIC mp_obj_t machine_lcd_circle(size_t n_args, const mp_obj_t *args) {
     int y1 = mp_obj_get_int(args[2]);
     int r  = mp_obj_get_int(args[3]);
 
-    error_check((x1 >= 0 && x1 <= 240) && (y1 >= 0 && y1 <= 240) , "The min/max X/Y coordinates is 0/240");
+    error_check((x1 >= 0 && x1 <= 239) && (y1 >= 0 && y1 <= 239) , "The min/max X/Y coordinates is 0/239");
 
     lcd_draw_circle(x1, y1, r);
     return mp_const_none;