UP-DOWN Control

本文介绍了一个Windows UI编程示例,展示了如何使用WM_NOTIFY消息处理水平和垂直滚动条的更改,并更新编辑框中的数值。代码详细解释了滚动条操作及数值限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

case WM_NOTIFY:
switch(wParam){
case (WPARAM)IDC_VERTICAL_SPIN:
InitPaperPosition(hdlg, lParam, GetDlgItem(hdlg, IDC_SURFACE_POS_X));
break;
case (WPARAM)IDC_HORIZONTAL_SPIN:
InitPaperPosition(hdlg, lParam, GetDlgItem(hdlg, IDC_SURFACE_POS_Y));
break;
}
return FALSE;


OOL InitPaperPosition(HWND hdlg,LPARAM lParam,HWND hEdit)
{
double d = 0;
char str[32];
char str2[32] = "0";
LPNMUPDOWN lpnmud;
lpnmud=(LPNMUPDOWN)lParam;

if (lpnmud->hdr.code==UDN_DELTAPOS){
GetWindowText(hEdit,str,(int)sizeof(str));
d=atof(str);
if((lpnmud->iDelta)<0) {
d+=0.1;
}else if((lpnmud->iDelta)>0) {
d-=0.1;
}
sprintf(str,"%.1lf",d);

if(d > 50.0) {
SetWindowText(hEdit,"-50.0");
return TRUE;
}else if(d < -50.0) {
SetWindowText(hEdit,"50.0");
return TRUE;
}

PrePaperPosSetting(d,str,str2,hEdit);

return TRUE;
}
return FALSE;
}


VOID PrePaperPosSetting(double d,char *str,char *str2,HWND hEdit)
{
char *p;
char *q;
int i,j;

if (d > 0) {
p = str;
if ( * (p + 1) == '.') {
strcat_s(str2, 32, str);
SetWindowText(hEdit, str2);
} else {
SetWindowText(hEdit, str);
}
} else if (d < 0) {
p = str;
if ( * (p + 2) == '.') {
i = 0;
p = p + 1;
while (str[i] != '\0') i++;
j = i;
i--;
q = & str[i];
while (q >= p) {
str[j] = * q;
q--;
j--;
}
* p = '0';
str[i + 2] = '\0';
SetWindowText(hEdit, str);
} else {
SetWindowText(hEdit, str);
}
} else {
SetWindowText(hEdit, "00.0");
}
}
usage: control_robot.py [-h] [--config_path str] [--robot str] [--robot.type {aloha,koch,koch_bimanual,moss,so101,so100,stretch,lekiwi}] [--robot.gripper_open_degree str] [--robot.max_relative_target str] [--robot.ip str] [--robot.port str] [--robot.video_port str] [--robot.cameras str] [--robot.calibration_dir str] [--robot.leader_arms str] [--robot.follower_arms str] [--robot.teleop_keys str] [--robot.mock str] [--control str] [--control.type {calibrate,teleoperate,record,replay,remote_robot}] [--control.arms str] [--control.teleop_time_s str] [--control.single_task str] [--policy str] [--control.policy.type {act,diffusion,pi0,smolvla,tdmpc,vqbet,pi0fast}] [--control.policy.replace_final_stride_with_dilation str] [--control.policy.pre_norm str] [--control.policy.dim_model str] [--control.policy.n_heads str] [--control.policy.dim_feedforward str] [--control.policy.feedforward_activation str] [--control.policy.n_encoder_layers str] [--control.policy.n_decoder_layers str] [--control.policy.use_vae str] [--control.policy.n_vae_encoder_layers str] [--control.policy.temporal_ensemble_coeff str] [--control.policy.kl_weight str] [--control.policy.optimizer_lr_backbone str] [--control.policy.drop_n_last_frames str] [--control.policy.use_separate_rgb_encoder_per_camera str] [--control.policy.down_dims str] [--control.policy.kernel_size str] [--control.policy.n_groups str] [--control.policy.diffusion_step_embed_dim str] [--control.policy.use_film_scale_modulation str] [--control.policy.noise_scheduler_type str] [--control.policy.num_train_timesteps str] [--control.policy.beta_schedule str] [--control.policy.beta_start str] [--control.policy.beta_end str] [--control.policy.prediction_type str] [--control.policy.clip_sample str] [--control.policy.clip_sample_range str] [--control.policy.num_inference_steps str] [--control.policy.do_mask_loss_for_padding str] [--control.policy.scheduler_name str] [--control.policy.attention_implementation str] [--control.policy.num_steps str] [--control.policy.train_expert_only str] [--control.policy.train_state_proj str] [--control.policy.optimizer_grad_clip_norm str] [--control.policy.vlm_model_name str] [--control.policy.load_vlm_weights str] [--control.policy.add_image_special_tokens str] [--control.policy.attention_mode str] [--control.policy.prefix_length str] [--control.policy.pad_language_to str] [--control.policy.num_expert_layers str] [--control.policy.num_vlm_layers str] [--control.policy.self_attn_every_n_layers str] [--control.policy.expert_width_multiplier str] [--control.policy.min_period str] [--control.policy.max_period str] [--control.policy.n_action_repeats str] [--control.policy.horizon str] [--control.policy.image_encoder_hidden_dim str] [--control.policy.state_encoder_hidden_dim str] [--control.policy.latent_dim str] [--control.policy.q_ensemble_size str] [--control.policy.mlp_dim str] [--control.policy.discount str] [--control.policy.use_mpc str] [--control.policy.cem_iterations str] [--control.policy.max_std str] [--control.policy.min_std str] [--control.policy.n_gaussian_samples str] [--control.policy.n_pi_samples str] [--control.policy.uncertainty_regularizer_coeff str] [--control.policy.n_elites str] [--control.policy.elite_weighting_temperature str] [--control.policy.gaussian_mean_momentum str] [--control.policy.max_random_shift_ratio str] [--control.policy.reward_coeff str] [--control.policy.expectile_weight str] [--control.policy.value_coeff str] [--control.policy.consistency_coeff str] [--control.policy.advantage_scaling str] [--control.policy.pi_coeff str] [--control.policy.temporal_decay_coeff str] [--control.policy.target_model_momentum str] [--control.policy.n_action_pred_token str] [--control.policy.action_chunk_size str] [--control.policy.vision_backbone str] [--control.policy.crop_shape str] [--control.policy.crop_is_random str] [--control.policy.pretrained_backbone_weights str] [--control.policy.use_group_norm str] [--control.policy.spatial_softmax_num_keypoints str] [--control.policy.n_vqvae_training_steps str] [--control.policy.vqvae_n_embed str] [--control.policy.vqvae_embedding_dim str] [--control.policy.vqvae_enc_hidden_dim str] [--control.policy.gpt_block_size str] [--control.policy.gpt_input_dim str] [--control.policy.gpt_output_dim str] [--control.policy.gpt_n_layer str] [--control.policy.gpt_n_head str] [--control.policy.gpt_hidden_dim str] [--control.policy.dropout str] [--control.policy.mlp_hidden_dim str] [--control.policy.offset_loss_weight str] [--control.policy.primary_code_loss_weight str] [--control.policy.secondary_code_loss_weight str] [--control.policy.bet_softmax_temperature str] [--control.policy.sequentially_select str] [--control.policy.optimizer_vqvae_lr str] [--control.policy.optimizer_vqvae_weight_decay str] [--control.policy.n_obs_steps str] [--control.policy.normalization_mapping str] [--control.policy.input_features str] [--control.policy.output_features str] [--control.policy.device str] [--control.policy.use_amp str] [--control.policy.chunk_size str] [--control.policy.n_action_steps str] [--control.policy.max_state_dim str] [--control.policy.max_action_dim str] [--control.policy.resize_imgs_with_padding str] [--control.policy.interpolate_like_pi str] [--control.policy.empty_cameras str] [--control.policy.adapt_to_pi_aloha str] [--control.policy.use_delta_joint_actions_aloha str] [--control.policy.tokenizer_max_length str] [--control.policy.proj_width str] [--control.policy.max_decoding_steps str] [--control.policy.fast_skip_tokens str] [--control.policy.max_input_seq_len str] [--control.policy.use_cache str] [--control.policy.freeze_vision_encoder str] [--control.policy.freeze_lm_head str] [--control.policy.optimizer_lr str] [--control.policy.optimizer_betas str] [--control.policy.optimizer_eps str] [--control.policy.optimizer_weight_decay str] [--control.policy.scheduler_warmup_steps str] [--control.policy.scheduler_decay_steps str] [--control.policy.scheduler_decay_lr str] [--control.policy.checkpoint_path str] [--control.policy.padding_side str] [--control.policy.precision str] [--control.policy.grad_clip_norm str] [--control.policy.relaxed_action_decoding str] [--control.warmup_time_s str] [--control.episode_time_s str] [--control.reset_time_s str] [--control.num_episodes str] [--control.video str] [--control.push_to_hub str] [--control.private str] [--control.tags str] [--control.num_image_writer_processes str] [--control.num_image_writer_threads_per_camera str] [--control.resume str] [--control.repo_id str] [--control.episode str] [--control.root str] [--control.fps str] [--control.play_sounds str] [--control.log_interval str] [--control.display_data str] [--control.viewer_ip str] [--control.viewer_port str] control_robot.py: error: unrecognized arguments: --control.local_files_only=true
最新发布
07-08
<think>我们遇到了一个错误:在运行control_robot.py时,传递了一个未被识别的参数`--control.local_files_only=true`。 根据帮助信息(usage)中列出的参数,我们可以看到所有参数都是以`--`开头,并且分为不同的部分,例如`--robot`、`--control`等。 但是,在帮助信息中并没有列出`--control.local_files_only`这个参数,因此脚本无法识别它。 可能的原因: 1. 该参数确实不存在于当前版本的脚本中。 2. 参数名称拼写错误,或者应该属于其他部分(例如,可能是`--policy.local_files_only`,但帮助信息中也没有)。 3. 该参数可能是为某个特定功能预留的,但当前版本尚未实现或文档未更新。 解决方案: 1. 检查参数名称是否正确,特别是注意大小写(例如,是否应该是`--control.local-files-only`?但帮助信息中都是使用下划线)。 2. 查看脚本的最新文档或源代码,确认是否支持该参数。 3. 如果该参数不是必需的,可以尝试移除它。 根据帮助信息,我们注意到有一个参数是`--control`,但它后面需要跟一个字符串(str),而不是子参数。实际上,帮助信息中列出的参数结构是: --control.str ... 这样的形式,但实际上在帮助信息中是以`--control.`开头的多个参数,例如`--control.type`、`--control.arms`等。 但是,我们并没有看到`--control.local_files_only`。因此,我们只能认为这个参数在当前版本中不被支持。 建议: 去掉这个参数,或者如果必须使用,则需要检查脚本的更新版本是否支持。 另外,注意在帮助信息中,所有参数的值都被指定为字符串(str),因此即使布尔值也需要用字符串表示,如`true`或`True`。但是,由于该参数未被识别,所以不是格式问题。 所以,直接移除`--control.local_files_only=true`参数再运行即可。 如果这个参数是用于控制本地文件(比如避免从网络下载),并且脚本中确实需要这个功能,那么可能需要更新脚本到支持该参数的版本。 根据错误信息,我们也可以看到脚本支持很多参数,但唯独不支持这个。因此,移除它是最直接的解决方案。 如果用户坚持要使用这个参数,那么可能需要修改脚本源代码,添加对这个参数的支持(使用argparse或其他解析库)。 但是,在没有明确文档说明的情况下,不建议随意添加,因为可能影响脚本逻辑。 因此,我们建议先移除该参数运行。 如果问题仍然存在,再根据错误信息进一步分析。 现在,我们按照要求,在回答后提出3-5个相关问题。 §§相关问题§§ 1. 在运行Python脚本时,如何正确传递布尔类型的命令行参数? 2. 如果我想在control_robot.py中添加一个名为`--control.local_files_only`的参数,应该如何修改代码? 3. 有哪些方法可以查看一个Python脚本支持的所有命令行参数? 4. 为什么在帮助信息中没有列出`--control.local_files_only`参数? 5. 如果移除`--control.local_files_only=true`参数后脚本运行正常,但我想实现类似的功能(例如强制使用本地文件),应该怎么做?</think>运行 `control_robot.py` 时出现错误 `unrecognized arguments: --control.local_files_only=true`,说明该参数未被脚本识别。根据您提供的帮助信息,分析原因及解决方案如下: ### 错误原因分析 1. **参数未定义** `--control.local_files_only` 未出现在脚本的帮助信息中(usage 部分),证明该参数未被声明。 2. **可能的来源** 此参数可能是 Hugging Face 库(如 `transformers`)的通用参数,用于强制使用本地缓存文件。但 `control_robot.py` 未集成对此参数的支持。 3. **格式问题** - 脚本中所有布尔参数(如 `--control.video`)均以 `str` 类型声明(如 `str` 而非 `bool`),需传递字符串值(如 `"true"` 而非 `true`)。 - 但即使修正格式,未声明的参数仍会报错。 ### 解决方案 #### 1. **移除无效参数(推荐)** 直接删除 `--control.local_files_only=true`: ```bash python control_robot.py [其他有效参数] ``` #### 2. **修改参数格式(若必须保留)** 若脚本实际支持此功能但未声明,尝试: ```bash # 添加 "control." 前缀并修正布尔值格式 python control_robot.py --control.local_files_only="true" [其他参数] ``` #### 3. **扩展脚本参数解析** 若您可修改脚本源码,在参数解析器中添加此参数(使用 `argparse` 示例): ```python import argparse parser = argparse.ArgumentParser() # 添加以下声明 parser.add_argument("--control.local_files_only", type=str, default="false", help="强制使用本地文件") args = parser.parse_args() ``` #### 4. **检查依赖库文档** 若此参数属于第三方库(如 Hugging Face),查看其文档确认是否需通过环境变量启用: ```bash export HF_LOCAL_FILES_ONLY=true # Hugging Face 的环境变量方式 python control_robot.py [其他参数] ``` ### 关键注意事项 - **优先验证有效参数**:通过 `python control_robot.py --help` 确认所有支持参数。 - **参数命名一致性**:帮助信息中所有参数均以 `--[模块].[参数名]` 格式(如 `--control.type`),需严格匹配大小写和命名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值