日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

环形存储区

發布時間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 环形存储区 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

環形存儲區

?

概念:當多個不同線程調用同一接口如串口時,會出現干涉情況。增加環形存儲區后,會將不同線程的調用指令放入同一數組中輪詢調用同一接口。

?

?

具體內碼如下:

?

typedef?struct?

{?

????uint16_t?send_cmd[50];??????????//發送指令

????uint16_t?send_para[50];?????????//發送內容?

????uint8_t?send_add_in_number;?????//數組遞增序列號,遞增到50后變為0????

????uint8_t?send_sub_out_number;????//數組遞減序列號,遞增到50后變為0??

????uint8_t?send_times;?????????????//表示數組里,待發送的數量??

}modbus_huiling_t;

extern?modbus_huiling_t?modbus_huiling;?

?

//將調用指令增加到環形數組?

int?add_modbus_cmd(uint8_t?huiling_cmd,?uint16_t?para_time)?

{

????modbus_huiling.send_times++;?

????modbus_huiling.send_cmd[modbus_huiling.send_add_in_number]?=?huiling_cmd;?

????modbus_huiling.send_para[modbus_huiling.send_add_in_number]?=?para_time;??

?

????log_d("send_times?=?%d?\r\n",?modbus_huiling.send_times);??

????log_d("send_add_in_number?=?%d\r\n",?modbus_huiling.send_add_in_number);?

?

????if(modbus_huiling.send_add_in_number?>=?49)?????

????????modbus_huiling.send_add_in_number?=?0;

????else?

????????modbus_huiling.send_add_in_number++;

????return?0;?

}?

?

//環形數組遞減,串口完成后調用此接口

static?int?sub_modbus_cmd(void)???

{

????modbus_huiling.send_times?--;?

????if(modbus_huiling.send_sub_out_number?>=49)??

????????modbus_huiling.send_sub_out_number?=?0;

????else

????????modbus_huiling.send_sub_out_number?++;?

}

?

static?void?task_weight(void?const?*arg)?

{?

????uint16_t?em_temp?=?0;

????uint8_t?send_out_number?=?0;?

????uint32_t?current_value?=?0;?

?

????memset(&modbus_huiling,?0,?sizeof(modbus_huiling)?);

????ms_master_init();

????need_read_weight?=?1;

?

????current_value?=?STEP_CAL_INIT;

????handle_write_app_register(&current_value,?1,?CMS_JAW_CAL_STEP_STATIC);?

????add_modbus_cmd(MODULE_WEIGHT_CAL_JAW_OFF,?0);? //增加退出果醬校準模式指令

?

????get_cur_time(&Last_time);

?

????while?(1)?

????{?

????????//?get_temp_adc_value(&em_temp);??

????????dur_time?=?cal_timeoff_us(&Last_time);?

?

????????if(?(dur_time?>=?1000000)?&&?(need_read_weight?==?1)?)??//1s?

????????{

????????????add_modbus_cmd(MODULE_WEIGHT_READ,?0);??/增加果醬重量檢測指令

????????????get_cur_time(&Last_time);?

????????}

????????

????????if(modbus_huiling.send_times?!=?0)

????????{

????????????log_d("send_times?=?%d?\r\n",?modbus_huiling.send_times);?

????????????log_d("send_sub_out_number?=?%d?\r\n",?modbus_huiling.send_sub_out_number);?

????????????log_d("send_sub_out_cmd?=?%d?\r\n",?modbus_huiling.send_cmd[modbus_huiling.send_sub_out_number]);??

????????????send_out_number?=?modbus_huiling.send_sub_out_number;?

?

????????????switch?(modbus_huiling.send_cmd[send_out_number])?

????????????{

????????????case?MODULE_MOTOR_DIR_WRITE:

????????????{

????????????????motor_dir_write(&mb,?modbus_huiling.send_para[send_out_number]);?

????????????}

????????????????break;

????????????case?MODULE_MOTOR_DIR_READ:

????????????{

????????????????motor_dir_read(&mb,?&modbus_huiling.send_para[send_out_number]);?

????????????}

????????????????break;

????????????case?MODULE_MOTOR_DATA_READ:

????????????{

????????????????piece_motor_sensor_read(&mb,?&modbus_huiling.send_para[send_out_number]);?

????????????}

????????????????break;

????????????case?MODULE_MOTOR_JAW1_WRITE:?

????????????{

????????????????jaw_run_time_write(&mb,?JAW1,?modbus_huiling.send_para[send_out_number]);?

????????????}

????????????????break;

????????????case?MODULE_MOTOR_JAW1_READ:

????????????{

????????????????jaw_run_time_read(&mb,?JAW1,?&jaw1_remain_run_time);???

????????????}

????????????????break;

????????????case?MODULE_MOTOR_JAW2_WRITE:

????????????{

????????????????jaw_run_time_write(&mb,?JAW2,?modbus_huiling.send_para[send_out_number]);?

????????????}

????????????????break;

????????????case?MODULE_MOTOR_JAW2_READ:

????????????{

????????????????jaw_run_time_read(&mb,?JAW2,?&jaw2_remain_run_time);?

????????????}

????????????????break;

????????????case?MODULE_MOTOR_JAW3_WRITE:

????????????{

????????????????jaw_run_time_write(&mb,?JAW3,?modbus_huiling.send_para[send_out_number]);?

????????????}

????????????????break;

????????????case?MODULE_MOTOR_JAW3_READ:

????????????{

????????????????jaw_run_time_read(&mb,?JAW3,?&jaw3_remain_run_time);?

????????????}

????????????????break;

????????????case?MODULE_MOTOR_PIECE1_WRITE:

????????????{

????????????????fruit_piece_run_time_write(&mb,?FRUIT_PIECE1,?modbus_huiling.send_para[send_out_number]);

????????????}

????????????????break;

????????????case?MODULE_MOTOR_PIECE1_READ:

????????????{

????????????????fruit_piece_run_time_read(&mb,?FRUIT_PIECE1,?&piece1_remain_run_time);???

????????????}

????????????????break;

????????????case?MODULE_MOTOR_PIECE2_WRITE:

????????????{

????????????????fruit_piece_run_time_write(&mb,?FRUIT_PIECE2,?modbus_huiling.send_para[send_out_number]);

????????????}

????????????????break;

????????????case?MODULE_MOTOR_PIECE2_READ:

????????????{

????????????????fruit_piece_run_time_read(&mb,?FRUIT_PIECE2,?&piece2_remain_run_time);?

????????????}

????????????????break;

????????????case?MODULE_MOTOR_PIECE3_WRITE:?

????????????{

????????????????fruit_piece_run_time_write(&mb,?FRUIT_PIECE3,?modbus_huiling.send_para[send_out_number]);

????????????}

????????????????break;

????????????case?MODULE_MOTOR_PIECE3_READ:??

????????????{

????????????????fruit_piece_run_time_read(&mb,?FRUIT_PIECE3,?&piece3_remain_run_time);????

????????????}

????????????????break;

????????????

????????????//稱重?

????????????case?MODULE_WEIGHT_READ:?

????????????{???

????????????????weight_read_weight(&weight1_value,?&weight2_value,?&weight3_value);?

????????????}

????????????????break;

????????????case?MODULE_WEIGHT_CAL_JAW_ON:?

????????????{

????????????????

????????????????if(weight_enter_cal()?==?0)?

????????????????{?//進入校準模式?

????????????????????need_read_weight?=?0;?

????????????????????current_value?=?STEP_CAL_ENTER;???

????????????????????handle_write_app_register(&current_value,?1,?CMS_JAW_CAL_STEP_STATIC);?

????????????????}

????????????}

????????????????break;

????????????case?MODULE_WEIGHT_CAL_JAW_OFF:?

????????????{

????????????????if(weight_exit_cal()?==?0)?

????????????????{?//退出校準模式?

????????????????????need_read_weight?=?1;

????????????????????current_value?=?STEP_CAL_EXIT;???

????????????????????handle_write_app_register(&current_value,?1,?CMS_JAW_CAL_STEP_STATIC);?

????????????????}

????????????}

????????????????break;

????????????case?MODULE_WEIGHT_CAL_JAW_1_0KG:

????????????{

????????????????if(weight_cal_channel(Jaw1,?0)?==?0)?

????????????????{?//

????????????????????current_value?=?STEP_CAL_JAW1_0_success;???

????????????????}

????????????????else

????????????????{

????????????????????current_value?=?STEP_CAL_JAW1_0_fail;???

????????????????}

????????????????handle_write_app_register(&current_value,?1,?CMS_JAW_CAL_STEP_STATIC);?

????????????}

????????????????break;

????????????case?MODULE_WEIGHT_CAL_JAW_1_1KG:

????????????{????

????????????????if(weight_cal_channel(Jaw1,?1)?==?0)?

????????????????{?//

????????????????????current_value?=?STEP_CAL_JAW1_1_success;????

????????????????}

????????????????else

????????????????{

????????????????????current_value?=?STEP_CAL_JAW1_1_fail;???

????????????????}?

????????????????handle_write_app_register(&current_value,?1,?CMS_JAW_CAL_STEP_STATIC);???

????????????}

????????????????break;

????????????case?MODULE_WEIGHT_CAL_JAW_2_0KG:

????????????{

????????????????if(weight_cal_channel(Jaw2,?0)?==?0)?

????????????????{?//

????????????????????current_value?=?STEP_CAL_JAW2_0_success;????

????????????????}

????????????????else

????????????????{

????????????????????current_value?=?STEP_CAL_JAW2_0_fail;???

????????????????}

????????????????handle_write_app_register(&current_value,?1,?CMS_JAW_CAL_STEP_STATIC);?

????????????}

????????????????break;

????????????case?MODULE_WEIGHT_CAL_JAW_2_1KG:

????????????{

????????????????if(weight_cal_channel(Jaw2,?1)?==?0)?

????????????????{?//

????????????????????current_value?=?STEP_CAL_JAW2_1_success;????

????????????????}

????????????????else

????????????????{

????????????????????current_value?=?STEP_CAL_JAW2_1_fail;???

????????????????}

?

????????????????handle_write_app_register(&current_value,?1,?CMS_JAW_CAL_STEP_STATIC);?

????????????}

????????????????break;

????????????case?MODULE_WEIGHT_CAL_JAW_3_0KG:

????????????{

????????????????if(weight_cal_channel(Jaw3,?0)?==?0)?

????????????????{?//

????????????????????current_value?=?STEP_CAL_JAW3_0_success;????

????????????????}

????????????????else

????????????????{

????????????????????current_value?=?STEP_CAL_JAW3_0_fail;???

????????????????}

????????????????handle_write_app_register(&current_value,?1,?CMS_JAW_CAL_STEP_STATIC);?

????????????}

????????????????break;

????????????case?MODULE_WEIGHT_CAL_JAW_3_1KG:

????????????{

????????????????if(weight_cal_channel(Jaw3,?1)?==?0)?

????????????????{?//

????????????????????current_value?=?STEP_CAL_JAW3_1_success;????

????????????????}

????????????????else

????????????????{

????????????????????current_value?=?STEP_CAL_JAW3_1_fail;???

????????????????}

????????????????handle_write_app_register(&current_value,?1,?CMS_JAW_CAL_STEP_STATIC);?

????????????}?

????????????????break;???

?

????????????default:

????????????????break;

????????????}

????????????

????????????sub_modbus_cmd();?

????????}???

????????osDelay(20);?

????}????

}?

?

?

?

總結

以上是生活随笔為你收集整理的环形存储区的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 奇米二区| 69久人妻无码精品一区 | 久久亚洲精少妇毛片午夜无码 | 久久国产乱子伦精品 | 夜夜嗨av一区二区三区 | 性高跟鞋xxxxhd国产电影 | 国产富婆一级全黄大片 | 久久精品人妻av一区二区三区 | 日本全黄裸体片 | 伊人青青草原 | 激情小说激情视频 | 最新91视频| 亚洲无吗在线观看 | 五月婷婷色 | 国产毛片久久久久久 | www.av在线.com | 天天拍天天干 | 日本美女动态 | av色站| 99热这里只有精品4 精品国产黄色 | 日韩av在线中文字幕 | 国产一区二区视频在线观看 | 综合亚洲色图 | 乌克兰极品av女神 | 久久亚洲熟女cc98cm | 国产成人av一区二区三区在线观看 | 成人精品亚洲人成在线 | 娇喘顶撞深初h1v1 | 日本裸体动漫 | 国产精品麻豆成人av电影艾秋 | 欧美日韩免费高清一区色橹橹 | 久久久精品在线 | 神马午夜影院 | 欧美影视一区二区 | 在线免费观看av不卡 | 成人免费毛片入口 | 欧美色xxx| 午夜精品一区二区三区在线视频 | 欧美激情校园春色 | 午夜国产一区二区 | 黄色网址av| 色综合视频在线 | 初音未来打屁股 | 在线观看深夜视频 | 欧美日韩久久久久久 | 国产美女永久免费无遮挡 | 精品国产乱码久久久久久影片 | 网站黄色在线观看 | 另类av小说 | 欧美不卡视频在线观看 | 黑人与亚洲人色ⅹvideos | 体内射精一区二区 | 国产精品性| 久草福利在线 | 亚洲一区二区精品视频 | 欧美一级一区二区三区 | 中文字幕欧美人妻精品一区蜜臀 | 男女午夜激情 | 久久久精品免费看 | 午夜成人在线视频 | 色片网站在线观看 | 麻豆久久精品 | 亚欧三级| 久久成人综合 | 欧美激情va永久在线播放 | 午夜精品一区二区在线观看 | 丝袜性爱视频 | 成人深夜小视频 | 日韩欧美亚 | 亚洲天堂网络 | 麻豆国产一区二区 | 国产一区二区三区视频在线播放 | 99精品一区二区三区 | 美女的胸给男人玩视频 | www.色天使 | 在线播放无码后入内射少妇 | 国产精品国产三级国产专区51区 | 一区精品在线观看 | 一区二区三区在线视频播放 | www国产精品内射老熟女 | 国产午夜久久 | 韩国伦理中文字幕 | 六月激情婷婷 | 在线免费观看高清视频 | 久久黄色免费视频 | 欧美a级成人淫片免费看 | 国产精品久久久久久久久久免费 | 国产你懂得 | 亚洲成人v | 欧美在线xxxx | 亚洲视频自拍偷拍 | 国产在线超碰 | www.久久av.com | 国内毛片毛片 | 91大神精品在线 | 一级黄色a级片 | 中文精品无码中文字幕无码专区 | 国产成人精品一区二 | 亚洲天堂网站 |