VS_Error: LINK1123

  打包遇到  

  LNK1123: 转换到 COFF 期间失败: 文件无效或损坏


      处理方法1:

       


   处理方法2:

    全盘搜索 cvtres.exe 

   主要是为了找到安装VS的地方,一般都在C盘,也有的喜欢装在其他盘里面

    然后举个例子:

    用VS2010编译失败的,可以把10.0/bin下面的cvtres.exe 删掉  从其他的版本里面拷一个粘贴到这里就可以了,亲测


   

好的,我们来整合现有协议,并根据新的协议概念设计新的命令及其响应。 通用响应格式 为了保持一致性,所有命令的响应将遵循以下基本格式: sn<ID>, ch<ID>, <command_name>_ack :status[OK|ERROR], param1[value1], error_msg["详细错误信息"] status[OK]: 表示命令成功执行。 status[ERROR]: 表示命令执行失败。 paramX[valueX]: 成功时可能返回的额外参数(例如,getter命令返回的数据)。 error_msg["..."]: 失败时的错误描述。 sn 和 ch 将与请求命令中的 sn 和 ch 对应。 协议设计与响应 0. 初始化与配置 0.1 系统初始化 (System Init) 命令: sn20, ch0, system_init 响应: sn20, ch0, system_init_ack :status[OK] 错误响应: sn20, ch0, system_init_ack :status[ERROR], error_msg["Initialization failed: <reason>"] 0.2 上传相机配置文件 (Upload Camera Config File) (新) 说明:主机发送配置文件内容或路径给设备加载。这里假设设备能从指定路径读取。 命令: sn20, ch0, upload_camera_config :path["/path/to/device/accessible/config.ini"] 响应: sn20, ch0, upload_camera_config_ack :status[OK], file_loaded["config.ini"] 错误响应: sn20, ch0, upload_camera_config_ack :status[ERROR], error_msg["File not found or invalid format"] (注: 实际文件传输可能需要更复杂的机制,如分块传输,此处简化为一个命令) 0.3 设置图像数字增益 (Set Image Digital RGB Gain) (新 - 对应 "图像增益") 说明:设置图像处理后的数字增益。 命令: sn20, ch0, set_rgb_gain :gain_r[1.0], gain_g[1.0], gain_b[1.0] 响应: sn20, ch0, set_rgb_gain_ack :status[OK], applied_gain_r[1.0], applied_gain_g[1.0], applied_gain_b[1.0] 错误响应: sn20, ch0, set_rgb_gain_ack :status[ERROR], error_msg["Invalid gain value (e.g., out of range 0.1-10.0)"] 0.4 获取图像数字增益 (Get Image Digital RGB Gain) (新) 命令: sn20, ch0, get_rgb_gain 响应: sn20, ch0, get_rgb_gain_ack :status[OK], gain_r[1.0], gain_g[1.0], gain_b[1.0] 错误响应: sn20, ch0, get_rgb_gain_ack :status[ERROR], error_msg["Failed to retrieve gain"] 1. GMSL链路与显示控制 1.1 建立GMSL链接 (Set GMSL Link) 命令: sn20, ch0, set_gmsl_link :img[1920x1080-0x1e], gmsl-speed[6], trigger_gpio[2], osd_gain[16-16-16], show_mode[1] 响应: sn20, ch0, set_gmsl_link_ack :status[OK], link_status[established], negotiated_speed[6] 错误响应: sn20, ch0, set_gmsl_link_ack :status[ERROR], link_status[failed], error_msg["Link negotiation failed: <reason>"] 1.2 DP显示视频 (Set Video Show) 命令: sn20, ch0, set_video_show 响应: sn20, ch0, set_video_show_ack :status[OK], display_status[showing] 错误响应: sn20, ch0, set_video_show_ack :status[ERROR], error_msg["Failed to enable video output"] 1.3 DP不显示视频 (Set Video Hide) 命令: sn20, ch0, set_video_hide 响应: sn20, ch0, set_video_hide_ack :status[OK], display_status[hidden] 错误响应: sn20, ch0, set_video_hide_ack :status[ERROR], error_msg["Failed to disable video output"] 1.4 设置图像显示格式 (Set Video Mode - YUYV/UYVY) 命令 (UYVY): sn20, ch0, set_video_mode :show_mode[1] 命令 (YUYV): sn20, ch0, set_video_mode :show_mode[0] 响应: sn20, ch0, set_video_mode_ack :status[OK], current_mode[1|0] 错误响应: sn20, ch0, set_video_mode_ack :status[ERROR], error_msg["Invalid mode or failed to set"] 1.5 设置多路显示源 (Set Multi-Display Source) (新 - 对应 "显示图像:可以勾选两路...") 说明:假设设备有一个或多个显示输出口(如DP1, DP2),并且可以从不同通道的原始或故障视频流中选择。 output_port: 显示输出端口标识 (如果只有一个输出,此参数可省略或固定)。 input_sn: 输入源的SN (如果总是当前SN,可省略)。 input_ch: 输入源的通道号。 source_type: original 或 faulted。 命令: sn20, chX, set_display_source :output_port[DP1], input_sn[20], input_ch[0], source_type[original] 命令: sn20, chY, set_display_source :output_port[DP1], input_sn[20], input_ch[1], source_type[faulted] (如果想在DP1同时显示ch1的故障视频,这暗示了PIP或分屏能力) 简化版:如果只控制当前sn, ch的输出到固定显示器 命令: sn20, ch0, select_display_content :type[original|faulted] 响应: sn20, ch0, select_display_content_ack :status[OK], displaying[original|faulted] 错误响应: sn20, ch0, select_display_content_ack :status[ERROR], error_msg["Invalid source type or channel"] (为了简化,我们采用简化版。复杂的多路输出选择器需要更详细的架构定义) 2. 图像故障注入 2.1 添加故障图像 (Add Image Fault) 说明:为故障图像增加一个可选的id,方便单独管理。 命令: sn20, ch0, add_img_fault :id[fault_sun_01], pos[1000x0], path["/home/root/png/1.png"] 命令 (无ID): sn20, ch0, add_img_fault :pos[0x0], path["/home/root/png/5.png"] 响应: sn20, ch0, add_img_fault_ack :status[OK], fault_id[fault_sun_01|generated_id_if_none_provided] 错误响应: sn20, ch0, add_img_fault_ack :status[ERROR], error_msg["Image path not found or invalid position"] 2.2 清除故障图像 (Remove Image Fault) 说明:增加按ID清除的功能。无参数则清除所有。 命令 (清除所有): sn20, ch0, remove_img_fault 命令 (按ID清除): sn20, ch0, remove_img_fault :id[fault_sun_01] 响应: sn20, ch0, remove_img_fault_ack :status[OK], cleared_count[N] (N是被清除的图像数量) 错误响应: sn20, ch0, remove_img_fault_ack :status[ERROR], error_msg["Fault ID not found or failed to remove"] 3. 视频传输故障注入 3.1 丢帧故障 (Set Frame Fault) 命令: sn20, ch0, set_frame_fault :frame_count[5] 响应: sn20, ch0, set_frame_fault_ack :status[OK], frames_to_drop[5] 错误响应: sn20, ch0, set_frame_fault_ack :status[ERROR], error_msg["Invalid frame count"] 清除: sn20, ch0, set_frame_fault :frame_count[0] (响应同上) 3.2 丢行故障 (Set Drop Line) 命令: sn20, ch0, set_drop_line :line_pos[100], line_count[10] 响应: sn20, ch0, set_drop_line_ack :status[OK], lines_dropped_from[100], count[10] 错误响应: sn20, ch0, set_drop_line_ack :status[ERROR], error_msg["Invalid line position or count"] 清除: sn20, ch0, set_drop_line :line_pos[0], line_count[0] (响应同上) 3.3 CRC错误故障 (Set CRC Error) 命令: sn20, ch0, set_crc_error :line_pos[200], line_count[5] 响应: sn20, ch0, set_crc_error_ack :status[OK], crc_error_from_line[200], count[5] 错误响应: sn20, ch0, set_crc_error_ack :status[ERROR], error_msg["Invalid line position or count for CRC error"] 清除: sn20, ch0, set_crc_error :line_pos[0], line_count[0] (响应同上) 3.4 矩形区域数据丢失故障 (Set Rectangular Data Loss Fault) (新 - 对应 "视频传输故障") 说明:在指定区域内的数据丢失,持续指定帧数。 命令: sn20, ch0, set_data_loss_area_fault :start_line[100], start_pixel[200], end_line[150], end_pixel[400], frame_count[10] 响应: sn20, ch0, set_data_loss_area_fault_ack :status[OK], area[100,200-150,400], frames[10] 错误响应: sn20, ch0, set_data_loss_area_fault_ack :status[ERROR], error_msg["Invalid area coordinates or frame count"] 清除: sn20, ch0, set_data_loss_area_fault :frame_count[0] (或定义 clear_data_loss_area_fault) 4. GMSL链路层故障注入 4.1 GMSL视频链路故障 (Set GMSL Video Link Fault) (新) 说明:模拟GMSL数据通路(视频流)中断。 命令: sn20, ch0, set_gmsl_video_link_fault :enable[1], duration[5000ms] (1:使能, 0:禁止; duration 0表示永久) 响应: sn20, ch0, set_gmsl_video_link_fault_ack :status[OK], video_link_fault[enabled|disabled], duration[5000ms] 错误响应: sn20, ch0, set_gmsl_video_link_fault_ack :status[ERROR], error_msg["Failed to set GMSL video link fault"] 清除: sn20, ch0, set_gmsl_video_link_fault :enable[0] 4.2 GMSL控制链路故障 (Set GMSL Control Link Fault) (新) 说明:模拟GMSL控制通路(如I2C反向通道)中断。 命令: sn20, ch0, set_gmsl_control_link_fault :enable[1], duration[3000ms] 响应: sn20, ch0, set_gmsl_control_link_fault_ack :status[OK], control_link_fault[enabled|disabled], duration[3000ms] 错误响应: sn20, ch0, set_gmsl_control_link_fault_ack :status[ERROR], error_msg["Failed to set GMSL control link fault"] 清除: sn20, ch0, set_gmsl_control_link_fault :enable[0] 5. I2C 通讯故障注入 5.1 I2C设备应答异常 (Set I2C Device ACK Fault - General) 命令 (按次数): sn20, ch0, set_i2c_ack_fault :addr[0x32], mode[count], count[5] 命令 (按时间): sn20, ch0, set_i2c_ack_fault :addr[0x32], mode[time], time[3000ms] 响应: sn20, ch0, set_i2c_ack_fault_ack :status[OK], addr[0x32], mode[count|time], value[5|3000ms] 错误响应: sn20, ch0, set_i2c_ack_fault_ack :status[ERROR], error_msg["Invalid I2C address, mode, or value"] 清除 (隐式): 次数耗尽或时间到期自动清除。可添加显式清除:sn20, ch0, clear_i2c_ack_fault :addr[0x32] 5.2 I2C寄存器读写故障 (Set I2C Register R/W Fault) (新 - 对应 "I2C故障" 更细致的控制) 说明:针对特定I2C从设备地址的特定寄存器进行故障注入。 fault_type: read_value: 读取该寄存器时返回指定的fault_value。 write_nack: 写入该寄存器时模拟NACK。 read_nack: 读取该寄存器时模拟NACK。 mode: once (仅下次), count (接下来N次), always (直到清除)。 命令 (模拟读错误值): sn20, ch0, set_i2c_reg_fault :addr[0x32], reg[0x010A], fault_type[read_value], fault_value[0xAA], mode[count], count[3] 命令 (模拟写NACK): sn20, ch0, set_i2c_reg_fault :addr[0x32], reg[0x02BC], fault_type[write_nack], mode[always] 响应: sn20, ch0, set_i2c_reg_fault_ack :status[OK], addr[0x32], reg[0x010A], fault_type[read_value] 错误响应: sn20, ch0, set_i2c_reg_fault_ack :status[ERROR], error_msg["Invalid I2C params or fault type"] 清除: sn20, ch0, clear_i2c_reg_fault :addr[0x32], reg[0x010A] 清除响应: sn20, ch0, clear_i2c_reg_fault_ack :status[OK], addr[0x32], reg[0x010A] 6. 查询类命令 (示例) 6.1 获取系统状态 (Get System Status) (新) 命令: sn20, ch0, get_system_status 响应: sn20, ch0, get_system_status_ack :status[OK], gmsl_link[connected|disconnected|error], video_output[showing|hidden], resolution[1920x1080], format[UYVY], current_rgb_gain[1.0,1.0,1.0], active_faults_count[2] 错误响应: sn20, ch0, get_system_status_ack :status[ERROR], error_msg["Failed to retrieve system status"] 6.2 获取当前活动故障列表 (Get Active Faults) (新) 命令: sn20, ch0, get_active_faults 响应: sn20, ch0, get_active_faults_ack :status[OK], fault_count[2], fault_1_type[img_overlay], fault_1_details["id:sun_spot, path:/path/img.png"], fault_2_type[i2c_reg_fault], fault_2_details["addr:0x32, reg:0x010A, type:read_value"] (响应中的故障列表格式可以更结构化,例如JSON数组,但此处为简化表示) 错误响应: sn20, ch0, get_active_faults_ack :status[ERROR], error_msg["Failed to retrieve active faults"] 这个设计涵盖了您现有的协议和新的概念,并为每个命令提供了相应的成功和错误响应。在实际实现中,error_msg 可以包含更具体的错误代码和信息,以便于调试。 按照如下格式添加参数说明等:I2C故障注入命令 (set_i2c_fault) 设置I2C设备应答异常。 格式: sn<序列号>,ch<通道号>,set_i2c_fault :addr[<设备地址>],mode[count],count[<命令数>] sn<序列号>,ch<通道号>,set_i2c_fault :addr[<设备地址>],mode[time],time[<时间ms>] 参数说明: - addr:I2C设备地址,如 0x32 - mode:故障模式,count 表示连续几个命令无应答,time 表示指定时间内无应答 - count:连续无应答的命令数量 - time:无应答持续时间,单位毫秒 示例: sn20,ch0,set_i2c_fault :addr[0x32],mode[count],count[5] sn20,ch0,set_i2c_fault :addr[0x32],mode[time],time[3000]
最新发布
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

岁月轻狂客rx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值