VSS操作详解:服务器端与客户端基本操作

需积分: 0 4 下载量 31 浏览量 更新于2024-08-16 收藏 617KB PPT 举报
"这篇文档是关于Visual SourceSafe (VSS)的基本操作教程,涵盖了服务器端和客户端的功能,包括历史查看、差异比较、文件查找、选项配置、字体设定、工具栏定制以及密码更改等操作。VSS是一个版本控制系统,用于管理软件开发过程中的源代码和其他文件。" 在VSS操作指南中,服务器端操作主要包括: 1. **Open SourceSafe Database**:管理员可以通过此功能打开已经创建的数据库,浏览和管理项目。 2. **Add/Remove/Edit User**:添加、删除或编辑用户账户,以控制谁可以访问VSS数据库。 3. **Change Password**:修改用户密码,确保账户安全。 4. **Rights by Project**:管理员可以为每个项目分配不同的权限,比如读取、写入、检查出(Checkout)和提交(Checkin)等。 5. **Rights Assignments for User**:指定特定用户对项目列表的权限,允许添加或删除项目权限分配。 6. **Copy User Rights**:复制一个用户的所有权限给另一个用户,快速设置新用户的访问级别。 7. **Lock SourceSafe Database**:锁定数据库,防止用户在锁定期间修改文件。已检出的文件可以在锁定后检入。 8. **Cleanup Temp Directory**:清理临时目录,释放存储空间。 9. **Create Database**:创建新的VSS数据库,指定路径和名称。 10. **Options**:设置数据库的多种选项,如启用多人同时检出文件、自动登录、默认数据库、文件类型扩展名等。 客户端操作主要包括: 1. **Show History**:查看文件或项目的版本历史,了解每个版本的变更详情。 2. **Show Different**:对比不同版本之间的差异,便于理解改动。 3. **Find in Files**:在整个项目中搜索特定内容,帮助定位代码或文件。 4. **Find Report**:生成搜索报告,统计和分析查找结果。 5. **Options**:客户端的配置选项,可以根据个人需求调整界面、性能等设置。 6. **Font**:改变VSS界面的字体样式和大小,提高阅读舒适度。 7. **Customize Toolbar**:自定义工具栏,添加或移除常用功能,优化工作流。 8. **Change Password**:客户端用户也能更改自己的密码。 此外,文档还提到了SCM(Software Configuration Management,软件配置管理)流程中的操作,这通常涉及版本控制、变更追踪、代码合并等环节,是软件开发中不可或缺的部分。 这篇VSS详细教程全面介绍了服务器端和客户端的基本操作,对于初次接触或需要深入理解VSS的用户来说,是一份非常实用的参考资料。

void setupADC() { #define ADCpin GPIO_PORT_P6,GPIO_PIN0 GPIO_setAsPeripheralModuleFunctionOutputPin(ADCpin); // 复位P6.0 ADC12_A_init(ADC12_A_BASE,ADC12_A_SAMPLEHOLDSOURCE_SC, ADC12_A_CLOCKSOURCE_ADC12OSC, ADC12_A_CLOCKDIVIDER_1); //软件触发,内部振荡器MODCLK作为时钟 ADC12_A_enable(ADC12_A_BASE); //启用ADC12_A模块 //设置并启用采样定时器脉冲,这里是使用的软件触发的形式,所以选择失能 ADC12_A_setupSamplingTimer(ADC12_A_BASE,ADC12_A_CYCLEHOLD_16_CYCLES,ADC12_A_CYCLEHOLD_16_CYCLES,ADC12_A_MULTIPLESAMPLESDISABLE); ADC12_A_configureMemoryParam param = {0}; param.memoryBufferControlIndex = ADC12_A_MEMORY_0; //将内存缓冲配置为MEMORY_0 param.inputSourceSelect = ADC12_A_INPUT_A0; //将输入A0映射到内存缓冲区0,因为P6.0引脚对应A0 param.positiveRefVoltageSourceSelect = ADC12_A_VREFPOS_AVCC; //正电压为AVcc param.negativeRefVoltageSourceSelect = ADC12_A_VREFNEG_AVSS; //负电压为AVss param.endOfSequence = ADC12_A_NOTENDOFSEQUENCE; //单通道转换 ADC12_A_configureMemory(ADC12_A_BASE,¶m); // } //----------------------------- r e a d A D C -------------------------------- unsigned long readADC() { //开始从MEMORY_0中进行单通道连续转换 ADC12_A_startConversion(ADC12_A_BASE,ADC12_A_MEMORY_0,ADC12_A_SINGLECHANNEL); while(ADC12_A_isBusy(ADC12_A_BASE) == ADC12_A_BUSY){ // 等待转换完成 } //读取ADC转换之后寄存器的值 long result = ADC12_A_getResults(ADC12_A_BASE, ADC12_A_MEMORY_0); //将其转化为单位为mv的电压值 return (3220 * result) / 4096; // 3320是测量的Vss }

2023-07-17 上传

/* * File: ADC.c * Author: tlfte *AD转换,结果在C口和D口的LED上显示,能进行各种通道选择和参考电压,结果对齐方式选择 * Created on 2018年8月6日, 上午10:07 练习AD结果的计算验证,AD_RESULT=VIN×1023÷VREF,讲解887头文件的作用 */ // PIC16F887 Configuration Bit Settings // 'C' source line config statements // CONFIG1 #pragma config FOSC = XT // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register) #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled) #pragma config MCLRE = ON // RE3/MCLR pin function select bit (RE3/MCLR pin function is digital input, MCLR internally tied to VDD) #pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled) #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) #pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled) #pragma config IESO = OFF // Internal External Switchover bit (Internal/External Switchover mode is disabled) #pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled) #pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming) // CONFIG2 #pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V) #pragma config WRT = OFF // Flash Program Memory Self Write Enable bits (Write protection off) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> #define _XTAL_FREQ 4000000 //指明时钟晶振为4MHz,使delay宏定义可以正常使用 void CSH(void); unsigned int AD_SUB(char k); void main( ) { unsigned int y; CSH(); while(1) { __delay_ms(100); //每隔100毫秒循环一次 y=AD_

2023-05-24 上传

void setupADC() { #define ADCpins {GPIO_PORT_P6, GPIO_PIN0, GPIO_PORT_P6, GPIO_PIN1, GPIO_PORT_P6, GPIO_PIN2, GPIO_PORT_P6, GPIO_PIN3, GPIO_PORT_P6, GPIO_PIN4, GPIO_PORT_P6, GPIO_PIN5, GPIO_PORT_P6, GPIO_PIN6, GPIO_PORT_P6, GPIO_PIN7} GPIO_setAsPeripheralModuleFunctionOutputPin(ADCpins); // 复位P6.0 ADC12_A_init(ADC12_A_BASE,ADC12_A_SAMPLEHOLDSOURCE_SC, ADC12_A_CLOCKSOURCE_ADC12OSC, ADC12_A_CLOCKDIVIDER_1); //软件触发,内部振荡器MODCLK作为时钟 ADC12_A_enable(ADC12_A_BASE); //启用ADC12_A模块 //设置并启用采样定时器脉冲,这里是使用的软件触发的形式,所以选择失能 ADC12_A_setupSamplingTimer(ADC12_A_BASE,ADC12_A_CYCLEHOLD_16_CYCLES,ADC12_A_CYCLEHOLD_16_CYCLES,ADC12_A_MULTIPLESAMPLESDISABLE); ADC12_A_configureMemoryParam params[8] = {0}; for (int i = 0; i < 8; i++) { params[i].memoryBufferControlIndex = (ADC12_A_MEMORY_0 + i); params[i].inputSourceSelect = (ADC12_A_INPUT_A0 + i); params[i].positiveRefVoltageSourceSelect = ADC12_A_VREFPOS_AVCC; params[i].negativeRefVoltageSourceSelect = ADC12_A_VREFNEG_AVSS; params[i].endOfSequence = ADC12_A_NOTENDOFSEQUENCE; ADC12_A_configureMemory(ADC12_A_BASE, &(params[i])); } ADC12_A_configureMemory(ADC12_A_BASE,¶m); // } //----------------------------- r e a d A D C -------------------------------- unsigned long readADC() { unsigned long results[8] = {0}; for (int i = 0; i < 8; i++) { ADC12_A_startConversion(ADC12_A_BASE, (ADC12_A_MEMORY_0 + i), ADC12_A_SINGLECHANNEL); while (ADC12_A_isBusy(ADC12_A_BASE) == ADC12_A_BUSY) { // 等待转换完成 } results[i] = ADC12_A_getResults(ADC12_A_BASE, (ADC12_A_MEMORY_0 + i)); } // 然后可以根据需要对转换结果进行处理或返回 //将其转化为单位为mv的电压值 // return (3220 * result) / 4096; // 3320是测量的Vss }

2023-07-17 上传