2013-04-15 35 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。