📄 output.cpp
字号:
#include "StdAfx.h"
//************输出函数******************************************************************************
void Output(const LinkList * L, char *outputfilename, int outputnum)
{
int i;
FILE *fp;
LinkList *outputsignal = new LinkList[outputnum];
for (i = 0; i < outputnum; i++)
{
outputsignal[i] = L[i];
}
fp=fopen(outputfilename, "w"); //建立一个文字文件只写
fputs("Delay:yes\n\nOutput\n", fp); //开始写数据
for (i = 1; i <= outputnum; i++) //每循环一次,写入一行数据,即一个输出引脚的信号
{
fprintf(fp, "%s%d%c", "system.output", i, ':');
while(1)
{
fprintf( fp,"%d%c%d%c", (outputsignal[i-1]->data).value, '(', (outputsignal[i-1]->data).lasttime, ')');
outputsignal[i-1] = outputsignal[i-1]->next;
if(outputsignal[i-1] == NULL)
break;
fputs(",", fp);
}
fputs("\n", fp);
}
fputs("EndOutput", fp);
fclose(fp);
printf("输出文本文件成功生成\n");
}
//**********生成BMP图像函数**************************************************************************
void GetBMP(LinkList *L, char *bmpfilename, int outputnum)
{
int totaltime; //输入和输出信号的时间长度
LinkList *outputsignal;
outputsignal = L;
LinkList ptr=outputsignal[0];
// output(ptr);
while (ptr->next != NULL)
{
ptr = ptr->next;
}
totaltime = ptr->data.sumtime;
int width = totaltime + 100; //图像宽度
int height = 150 * outputnum; //图像高度
bmp_info bmp;
bmp_init(&bmp);
bmp_create(&bmp, width, height); //创建图像
int i, j;
for (j = 1; j < height; j++) //画坐标轴
{
pixel_color *buffer = bmp_get_buffer_at(&bmp, 50, j);
buffer->R = 250;
buffer->G = 40;
buffer->B = 0;
}
int base = 0; //记录每个信号在低点平时的y坐标
for (int n = 0; n < outputnum; n++) //每次循环画一个信号
{
base = 20 + 150 * (outputnum - n - 1); //为基点赋初值,每个信号沿用150像素
ptr = outputsignal[n];
i = 50; //信号从x坐标为50开始画
while (ptr != 0) //每次循环画一条线段
{
for (; i < ptr->data.sumtime + 50; i++) //每次循环画一个点
{
if (ptr->data.value == true) //定义划线的y坐标
{
j = base + 100;
}
else
{
j = base;
}
pixel_color *buffer = bmp_get_buffer_at(&bmp, i, j);
buffer->R = 250;
buffer->G = 40;
buffer->B = 0;
}
ptr = ptr->next;
if (ptr != 0) //画竖线
{
for (j = base ; j < base + 100; j++)
{
pixel_color *buffer = bmp_get_buffer_at(&bmp, i , j);
buffer->R = 250;
buffer->G = 40;
buffer->B = 0;
}
}
}
}
bmp_save_to_file(&bmp, bmpfilename);
bmp_destroy(&bmp);
printf("输出图像文件成功生成\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -