Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ssd1306_basic_write_point函数无法正常使用 #20

Closed
1696774082 opened this issue Jun 7, 2023 · 1 comment
Closed

ssd1306_basic_write_point函数无法正常使用 #20

1696774082 opened this issue Jun 7, 2023 · 1 comment

Comments

@1696774082
Copy link

Please ask your question

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

Additional context

No response

@libdriver
Copy link
Owner

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;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants