libdriver / ssd1306

SSD1306 full function driver library for general MCU and Linux.
https://www.libdriver.com
MIT License
652 stars 140 forks source link

ssd1306_basic_write_point函数无法正常使用 #20

Closed 1696774082 closed 1 year ago

1696774082 commented 1 year ago

Please ask your question

无法画直线 微信图片_20230607122816 Snipaste_2023-06-07_12-29-14

Additional context

No response

libdriver commented 1 year ago

Hello, thank you very much for using our driver. For operations that require simultaneous multi-point drawing, we suggest drawing in GRAM first and then updating to the screen. An example of drawing lines is as follows:

/**
 * @brief     basic example write line
 * @param[in] x0 is the coordinate x0
 * @param[in] x1 is the coordinate x1
 * @param[in] y is the coordinate y
 * @param[in] data is the written data
 * @return    status code
 *            - 0 success
 *            - 1 write line failed
 * @note      none
 */
uint8_t ssd1306_basic_write_line(uint8_t x0, uint8_t x1, uint8_t y, uint8_t data)
{
    uint8_t res;
    uint8_t i;

    for (i = x0; i <= x1; i++)
    {
        /* write point in gram */
        res = ssd1306_gram_write_point(&gs_handle, i, y, data);
        if (res != 0)
        {
            return 1;
        }
    }

    /* update gram */
    if (ssd1306_gram_update(&gs_handle) != 0)
    {
        return 1;
    }

    return 0;
}

您好,非常感谢使用我们的驱动,对于需要同时多点绘制的操作,我们更建议先在GRAM中绘制最后再更新到屏幕,画线的一个例子如下:

/**
 * @brief     basic example write line
 * @param[in] x0 is the coordinate x0
 * @param[in] x1 is the coordinate x1
 * @param[in] y is the coordinate y
 * @param[in] data is the written data
 * @return    status code
 *            - 0 success
 *            - 1 write line failed
 * @note      none
 */
uint8_t ssd1306_basic_write_line(uint8_t x0, uint8_t x1, uint8_t y, uint8_t data)
{
    uint8_t res;
    uint8_t i;

    for (i = x0; i <= x1; i++)
    {
        /* write point in gram */
        res = ssd1306_gram_write_point(&gs_handle, i, y, data);
        if (res != 0)
        {
            return 1;
        }
    }

    /* update gram */
    if (ssd1306_gram_update(&gs_handle) != 0)
    {
        return 1;
    }

    return 0;
}