2013-04-15 30 views
3

我想在网络上检测我的3D打印机,但由于某种原因它只返回2d打印机,因为3D打印机连接在网络上,有点奇怪,可从本地软件中检测到。有关如何显示所有网络打印机的任何想法?视觉工作室没有检测到网络上的3D打印机

using System; 
using System.Printing; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Data; 

namespace PrintQueuesExample 
{ 
    public partial class Window1 : Window 
    { 
    PrintQueueCollection _Printers; 

    public Window1() 
    { 
     _Printers = new PrintServer().GetPrintQueues(new[] { 
     EnumeratedPrintQueueTypes.Local, EnumeratedPrintQueueTypes.Connections}); 

     foreach (var queue in _Printers) 
     { 
     Console.WriteLine(queue.Name); 
     var capabilities = queue.GetPrintCapabilities(); 
     foreach (var size in capabilities.PageMediaSizeCapability) 
     { Console.WriteLine(size.ToString()); } 
     Console.WriteLine(); 
     } 

     InitializeComponent(); 
    } 

    public PrintQueueCollection Printers 
    { get { return _Printers; } } 

    private void PrintTestPageClick(object sender, RoutedEventArgs e) 
    { 
     var queue = _PrinterList.SelectedItem as PrintQueue; 
     if (queue == null) 
     { 
     MessageBox.Show("Please select a printer."); 
     return; 
     } 

     var size = _SizeList.SelectedItem as PageMediaSize; 
     if (size == null) 
     { 
     MessageBox.Show("Please select a page size."); 
     return; 
     } 

     queue.UserPrintTicket.PageMediaSize = size; 
     queue.UserPrintTicket.PageOrientation = _PortraitRadio.IsChecked == true ? 
     PageOrientation.Portrait : PageOrientation.Landscape; 

     var canvas = (Canvas)Resources["MyPrintingExample"]; 
     canvas.Measure(new Size(size.Width.Value, size.Height.Value)); 
     canvas.Arrange(new Rect(0, 0, canvas.DesiredSize.Width, 
      canvas.DesiredSize.Height)); 

     var writer = PrintQueue.CreateXpsDocumentWriter(queue); 
     writer.Write(canvas); 
    } 

    } 

    public class PrintQueueToPageSizesConverter : IValueConverter 
    { 
    public object Convert(object value, Type targetType, 
     object parameter, System.Globalization.CultureInfo culture) 
    { 
     return value == null ? null : 
     ((PrintQueue)value).GetPrintCapabilities().PageMediaSizeCapability; 
    } 

    public object ConvertBack(object value, Type targetType, 
     object parameter, System.Globalization.CultureInfo culture) 
    { throw new NotImplementedException(); } 
    } 
} 
+3

并且通常在打印机列表对话框中显示3d打印机*我会*想象*保留给传统打印机......但我不知道,但没有3D打印机。如果你进入记事本打印:它会出现吗? –

+0

不认为3D打印机被识别为* priner *本身。它应该是*一个设备*,就像一个硬币验证器,或一些USB闪光灯 – Tigran

+0

Windows打印驱动程序目前没有第三维。所以,他们不太可能在Windows中的任何*打印机列表中显示。如果它们显示在控制面板中的打印机列表中,则应该放在C#应用程序的打印机列表中。 –

回答

1

我高度怀疑三维打印机将出现在打印机的Windows控制面板部,因此被看作是一个打印机。我认为名称“3D打印机”可能会让人感到困惑,因为Windows在看到它时并不是真正意义上的“打印机”。

大多数打印机只知道行/列(以极大地简化事情),因此制造商可以使用通用打印机驱动程序作为基础。 3D打印机更先进/专业化,我猜测你需要一个SDK来输出3D打印机能够理解的指令。

您可能会从打印机的制造商处获得SDK。