110,528
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 以桌图形式显示打印机状态
/// </summary>
private void State()
{
while(true)//死循环
{
//panel_printstate.Controls.Clear();
this.Invoke(new VoidDelegate(delegate() { panel_printstate.Controls.Clear(); }));
SqlConnection conn = ConnectionStr.CyCon();
conn.Open();
int h = 4;//每行打印机的个数
SqlCommand cmd = new SqlCommand("select * from T_Dyj ORDER BY ID", conn);
SqlDataReader sdr = cmd.ExecuteReader();
int i = 0;
int j;
int r = 0;
int btnwidth = Convert.ToInt32(System.Math.Truncate((double)(panel_printstate.Width - 17) / h));//桌图大小(panel_qt.Width-17表示右边留出垂直滚动条17的距离,如果只留边距的话为panel_qt.Width-2)
while (sdr.Read())
{
string dyjmc = sdr["Dyjmc"].ToString().Trim();//打印机名称
string qddy = sdr["Qddy"].ToString().Trim();//是否为驱动打印
string wkdy = sdr["Wkdy"].ToString().Trim();//是否为网口打印
string dkdy = sdr["Dkdy"].ToString().Trim();//端口打印
string dyj = sdr["Dyj"].ToString().Trim();//打印机
string ipdz = sdr["Ipdz"].ToString().Trim();//IP地址
string Dk = sdr["Dk"].ToString().Trim();//端口号
string btl = sdr["Btl"].ToString().Trim();//波特率
j = i % h;
if (j == 0 && i != 0) r++;
Button btn = new Button();
if (qddy == "是")//如果是驱动方式,不判断状态
{
this.Invoke(new VoidDelegate(delegate()
{
btn.BackColor = Color.CadetBlue;
btn.Text = dyjmc.ToString().Trim() + "(驱动)" + "\n" + "\n" + "正常" + "\n" + "\n" + " ";
}));
}
if (wkdy == "是")//以网口方式判断状态
{
string wkzt = NetClass.PrinterNetZt(ipdz, 4000);
if (wkzt == "14 ")
{
this.Invoke(new VoidDelegate(delegate()
{
btn.BackColor = Color.CadetBlue;
btn.Text = dyjmc.ToString().Trim() + "(网口)" + "\n" + "\n" + "正常" + "\n" + "\n" + " ";
}));
}
if (wkzt == "00")
{
this.Invoke(new VoidDelegate(delegate()
{
btn.BackColor = Color.SandyBrown;
btn.Text = dyjmc.ToString().Trim() + "(网口)" + "\n" + "\n" + "异常" + "\n" + "\n" + " ";
}));
}
}
if (dkdy == "是")//以端口方式判断状态
{
ComClass com = new ComClass(Dk, btl);
string qzt = com.PrintZt();//取端口状态
if (qzt == "16 ")
{
this.Invoke(new VoidDelegate(delegate()
{
btn.BackColor = Color.CadetBlue;
btn.Text = dyjmc.ToString().Trim() + "(" + Dk + ")" + "\n" + "\n" + "正常" + "\n" + "\n" + " ";
}));
//检测正常后开始打印未打印的单据
SqlConnection conn2 = ConnectionStr.CyCon();
conn2.Open();
SqlCommand cxdy = new SqlCommand("select * from T_WdyList where Dyj='" + dyjmc.ToString().Trim() + "'", conn2);
SqlDataReader cxdysdr = cxdy.ExecuteReader();
while (cxdysdr.Read())
{
string id = cxdysdr["ID"].ToString().Trim(); //ID号
string dygs = cxdysdr["Dygs"].ToString().Trim(); //打印格式
string part1 = cxdysdr["Part1"].ToString().Trim(); //part1
string part2 = cxdysdr["Part2"].ToString().Trim(); //part2
string part3 = cxdysdr["Part3"].ToString().Trim(); //part3
string part4 = cxdysdr["Part4"].ToString().Trim(); //part4
if (dygs == "80格式")
{
com.WriteLinee(part1, ComClass.HorPos.Center);
com.NewRow();//另起一行
com.WriteLine(part2);
com.PrintLine();
com.WriteBigLine(part3);
com.PrintLine();
com.WriteLinee(part4, ComClass.HorPos.Right);
com.NewRow(5);//尾部空行
com.CutPaper();//切纸
com.PrintFm();//峰鸣
}
//删除已打印完的记录
SqlConnection conn3 = ConnectionStr.Cy3Con();
conn3.Open();
SqlCommand del = new SqlCommand("delete from T_WdyList where ID='" + id + "'", conn3);
del.ExecuteNonQuery();
conn3.Close();
}
cxdysdr.Close();
conn2.Close();
}
if (qzt == "1E ")
{
this.Invoke(new VoidDelegate(delegate()
{
btn.BackColor = Color.Tomato;
btn.Text = dyjmc.ToString().Trim() + "(" + Dk + ")" + "\n" + "\n" + "缺纸" + "\n" + "\n" + " ";
}));
}
if (qzt == "00")
{
this.Invoke(new VoidDelegate(delegate()
{
btn.BackColor = Color.SandyBrown;
btn.Text = dyjmc.ToString().Trim() + "(" + Dk + ")" + "\n" + "\n" + "异常" + "\n" + "\n" + " ";
}));
}
com.Dispose();
}
this.Invoke(new VoidDelegate(delegate()
{
btn.Font = new Font(btn.Font.FontFamily, 9, btn.Font.Style);//控件上设置字体的大小
btn.Size = new Size(btnwidth, btnwidth);//加载的控件的大小
btn.Left = 0 + (j) * btnwidth;//左边距
btn.Top = 0 + (r) * btnwidth;//上边距
btn.TabStop = false;
}));
this.Invoke(new VoidDelegate(delegate() { panel_printstate.Controls.Add(btn); }));
//panel_printstate.Controls.Add(btn);
i++;
}
sdr.Close();
//显示未打印记录条数
SqlCommand wdy = new SqlCommand("select count(*) from T_WdyList", conn);
this.Invoke(new VoidDelegate(delegate() { label_ddy.Text = Convert.ToString(wdy.ExecuteScalar()) + " 条"; }));
conn.Close();
System.Threading.Thread.Sleep(5000);//线程刷新时间,5秒一刷新
}
}
if (panel_printstate.InvokeRequired) {
panel_printstate.Controls.Clear();
}